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

时间:2013-06-14 23:36:44

标签: c# .net winforms

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

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

感谢您的帮助!

我用A:

形式创建了一个getter函数
public string getID()
        {
            return txtID.Text;
        }

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

string strID = getID();

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

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

A.getID();

1 个答案:

答案 0 :(得分:5)

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

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

FormA a = new FormA();
// Use a for a while, whatever
String id = a.getID();

现在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(); 
    }
}

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