如何以不同的形式访问getter函数?

Zzz*_*Zzz -2 .net c# winforms

我在一个项目/命名空间中有两个表单需要相互通信.表单A创建表单B的实例; 并且表单B需要访问表单A中的值(看起来很简单).

我在VB中从头开始构建表单时创建了这种类型的功能.这次我正在处理一个预先存在的项目,我无法获得表单B来访问表单A的值.是什么导致了这个问题,我该如何解决?

谢谢您的帮助!

我在表单A中创建了一个getter函数:

public string getID()
        {
            return txtID.Text;
        }
Run Code Online (Sandbox Code Playgroud)

然后我尝试在表单B中访问此方法:

string strID = getID();
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:"当前上下文中不存在名称'getID'"

此外,我尝试以这种方式访问​​该功能(但它不起作用):

A.getID();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

你已经声明了一个实例方法(而不是出于某种原因的属性,而忽略了.NET命名约定,但是嘿......).

这意味着您需要在表单的实例上调用它.所以作为一个简单的例子:

FormA a = new FormA();
// Use a for a while, whatever
String id = a.getID();
Run Code Online (Sandbox Code Playgroud)

现在,因为它FormA创建FormB自己,它可能只需要将引用传递给自己FormB,使用this:

FormB formB = new FormB(this);

...

class FormB
{
    private FormA parent;

    internal FormB(FormA parent)
    {
        this.parent = parent;
    }

    public void SomeOtherMethod()
    {
        // Or parent.Id as it would normally be, as a property...
        string id = parent.getID(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,将表格结合起来通常并不是一个好主意.是否FormB真的需要以后获得的价值?也许FormA只能将ID传递给构造函数FormB而不是?