值始终为空

值始终为空

问题描述:

我试图从不同的类访问文本框的值。该文本框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; 
+0

当您执行'winform1 wf = new winform1();'时,该窗口已经打开; – Guilherme

+0

是的 - 当我执行上述语法时,winform已经打开。 – BellHopByDayAmetuerCoderByNigh

+0

你需要看什么文本框的删除?我有一个_Leave()事件给他们,但就是这样。 – BellHopByDayAmetuerCoderByNigh

这是因为您正在访问表单的其他实例,而不是可见的实例。请注意,如果你这样做

winform1 wf = new winform1(); 
wf.Show(); 

它会显示您获得这些值的实际形式。

您需要获取正确的对象实例才能使用它。也许,如果你不打算打开该窗口的另一个实例,你可以创建一个静态属性来保存引用。

  1. 戴上了winform1类中:

    public static winform1 MainInstance { get; set; } 
    
  2. 把该winform1类的构造函数中

    MainInstance = this; 
    
  3. 现在,这样的访问:

    Messagebox.Show(winform1.MainInstance.txtfname.Text); 
    Messagebox.Show(winform1.MainInstance.txtlname.Text); 
    
+0

如果MainInstance = this;在InitializeComponents()之上或之下进行操作;? – BellHopByDayAmetuerCoderByNigh

+0

我不认为这应该有所作为,但要放在下面。 – Guilherme

+0

仍然在返回“” – BellHopByDayAmetuerCoderByNigh