值始终为空

Values Always Null

我正在尝试从另一个 class 访问文本框的值。文本框存在于 winform1.cs 中,我想在 testing.cs

中访问它们

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

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

我得到一个空引用异常 - 如果我使用直接 window 并键入 wf.txtfname.Text 它 returns "" - 文本框的修饰符设置为public.

我需要更改什么才能从不同的 class 捕获这些文本框的值?

如果有所不同,我试图在其中显示值的方法声明为

protected override void()

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

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

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

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

它将显示您正在获取这些值的实际形式。

您需要获取正确的对象实例才能使用它。也许,如果您不打算打开那个 window 的另一个实例,您可以创建一个包含引用的静态 属性。

  1. 把它放在 winform1 class:

    里面
    public static winform1 MainInstance { get; set; }
    
  2. 将其放入 winform1 class

    的构造函数中
    MainInstance = this;
    
  3. 现在,这样访问:

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