值始终为空

时间:2017-08-28 19:17:13

标签: c# class textbox instantiation

我试图从不同的类访问文本框的值。文本框存在于winform1.cs中,我想在testing.cs中访问它们

在testing.cs的顶部,我实例化了winform1 wf = new winform1();,它允许我看到带有智能感知的文本框,但如果我输入

Messagebox.Show(wf.txtfname.Text);
Messagebox.Show(wf.txtlname.Text);

我得到一个空引用异常 - 如果我使用立即窗口并输入wf.txtfname.Text它返回"" - 文本框的修饰符设置为公共。

我需要更改哪些内容才能从其他类中捕获这些文本框的值?

如果它有所不同,我试图显示值的方法被声明为

protected override void()

这是来自designer.cs的两个文本框的语法

public System.Windows.Forms.TextBox txtfname;
public System.Windows.Forms.TextBox txtlname;

1 个答案:

答案 0 :(得分:1)

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

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);