这里有类似的问题,但没有解决这个具体问题。我正在创建一个按钮对象来动态修改按钮上的图像。但是当我尝试在按钮上设置图像时,使用下面的代码,我得到“对象引用没有设置为对象的实例”。
Button button3;
button3 = (Button)this.Controls["btnDay" + ctrlsFwd.ToString("00")];
button3.Image = Resources.BookingAllDay;
任何帮助表示赞赏!轻松 - 这是我的第一篇文章: - )
**更新 - 有点像facepalm的时刻。按钮在面板中,所以我需要引用pnlCalendar.Controls而不是this.Controls。
答案 0 :(得分:5)
这样做的一种方法是:
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; }
因为可以发生。
答案 1 :(得分:1)
因此,button3 = (Button)this.Controls["btnDay" + ctrlsFwd.ToString("00")];
是一种非常有效的访问控件的方法,并且不起作用,具有该名称的控件不存在,或者控件更可能位于容器内。无论哪种方式在this
中搜索都无法找到它,无论您尝试找到多少种不同的方式。