this.Controls返回null

1 c# forms windows winforms

这里有类似的问题,但没有解决这个具体问题.我正在创建一个按钮对象来动态修改按钮上的图像.但是,当我尝试在按钮上设置图像时,使用下面的代码,我得到"对象引用未设置为对象的实例".

Button button3;
button3 = (Button)this.Controls["btnDay" + ctrlsFwd.ToString("00")];
button3.Image = Resources.BookingAllDay;
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏!轻松 - 这是我的第一篇文章:-)

**更新 - 有点像facepalm的时刻.按钮在面板中,所以我需要引用pnlCalendar.Controls而不是this.Controls.

Mik*_*oud 5

这样做的一种方法是:

button3 = (Button)this.Controls
    .Find("btnDay" + ctrlsFwd.ToString("00"))
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

另一种方法是:

button3 = this.Controls.OfType<Button>()
    .Where(b => b.Name == "btnDay" + ctrlsFwd.ToString("00"))
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

如上所述Stefan,检查null:

if (button3 == null) { return; }
Run Code Online (Sandbox Code Playgroud)

因为它可能发生.