【发布时间】:2013-06-20 22:25:26
【问题描述】:
我正在使用找到的指令here 来访问我的Winform 中已经存在的几个textboxes。由于某种原因,我得到了错误:
对象引用未设置为对象的实例
我很确定代码是正确的,但是一旦我尝试访问控件的任何property,我就会收到该错误。我的代码如下 - 任何人都可以发现我做错了什么吗?
TextBox textbox = this.Controls["txtLiveBlock" + ((i + 1) * (j + 1)).ToString()] as TextBox;
textbox.Text = "TESTING";
请注意,我的 Textbox 被称为“txtLiveBlock1”并且 i = 0, j = 0。我什至尝试将部分 txtLiveBlock" + ((i + 1) * (j + 1) 发送到 MessageBox 并且我得到了“txtLiveBlock1”。
【问题讨论】:
-
您确定控件实际上是一个文本框吗?我想如果没有找到具有给定名称的控件,索引器将抛出异常,因此很可能转换失败。我会直接转换为
TextBox,而不是使用as来查看它是什么。 -
我通过GUI工具箱添加了控件。我很确定这是
TextBox。 -
您的代码在哪个线程中运行?会不会是一些后台线程?
-
确保 TextBox 不在另一个容器控件中,例如面板或组框。
-
然后把
this改成容器控件,如果是tab控件,就得有合适的TabPage控件。
标签: c# object dynamic reference