这里有类似的问题,但没有回答这个具体问题。 我正在创build一个button对象来dynamic修改button上的图像。 但是,使用下面的代码,当我尝试设置button上的图像时,我得到“对象引用未设置为对象的实例”。
Button button3; button3 = (Button)this.Controls["btnDay" + ctrlsFwd.ToString("00")]; button3.Image = Resources.BookingAllDay;
任何帮助感激! 去轻松 – 这是我的第一篇文章:-)
**更新 – 一个facepalm片刻。 button在面板中,所以我需要参考pnlCalendar.Controls而不是this.Controls。
因此, button3 = (Button)this.Controls["btnDay" + ctrlsFwd.ToString("00")];
,是访问控件的完全有效的方法,并且不起作用,或者具有该名称的控件不存在,或者控件更可能在容器内。 无论哪种方式在this
搜索它不会找到它,无论有多少种不同的方式,你尝试找到它。
这样做的一个方法是:
button3 = (Button)this.Controls .Find("btnDay" + ctrlsFwd.ToString("00")) .FirstOrDefault();
另一种做法是:
button3 = this.Controls.OfType<Button>() .Where(b => b.Name == "btnDay" + ctrlsFwd.ToString("00")) .FirstOrDefault();
正如Stefan
所指出的那样,检查null
:
if (button3 == null) { return; }
因为它可能发生。