值始终为空
我试图从不同的类访问文本框的值。该文本框winform1.cs存在,我想访问他们testing.cs值始终为空
在我已经实例化winform1 wf = new winform1();
testing.cs的顶部,让我看到智能感知的文本框,但如果我键入
Messagebox.Show(wf.txtfname.Text);
Messagebox.Show(wf.txtlname.Text);
我得到一个空引用异常 - 如果我利用立即窗口并键入wf.txtfname.Text
它返回""
- 文本框的修饰符被设置为public。
我需要更改哪些内容以便我可以从不同的类中捕获这些文本框的值?
如果它的确与众不同,我试图与方法来显示值被声明为
protected override void()
这句法从designer.cs两个文本框
public System.Windows.Forms.TextBox txtfname;
public System.Windows.Forms.TextBox txtlname;
这是因为您正在访问表单的其他实例,而不是可见的实例。请注意,如果你这样做
winform1 wf = new winform1();
wf.Show();
它会显示您获得这些值的实际形式。
您需要获取正确的对象实例才能使用它。也许,如果你不打算打开该窗口的另一个实例,你可以创建一个静态属性来保存引用。
-
戴上了
winform1
类中:public static winform1 MainInstance { get; set; }
-
把该
winform1
类的构造函数中MainInstance = this;
-
现在,这样的访问:
Messagebox.Show(winform1.MainInstance.txtfname.Text); Messagebox.Show(winform1.MainInstance.txtlname.Text);
如果MainInstance = this;在InitializeComponents()之上或之下进行操作;? – BellHopByDayAmetuerCoderByNigh
我不认为这应该有所作为,但要放在下面。 – Guilherme
仍然在返回“” – BellHopByDayAmetuerCoderByNigh
当您执行'winform1 wf = new winform1();'时,该窗口已经打开; – Guilherme
是的 - 当我执行上述语法时,winform已经打开。 – BellHopByDayAmetuerCoderByNigh
你需要看什么文本框的删除?我有一个_Leave()事件给他们,但就是这样。 – BellHopByDayAmetuerCoderByNigh