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

本文关键字:访问 getter 函数 | 更新日期: 2023-09-27 18:18:24

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

在VB中从头开始构建表单时,我已经创建了这种类型的功能。这次我在一个预先存在的项目上工作,我不能让形式B访问形式a的值。是什么导致了这个问题,我该如何解决它?

谢谢你的帮助!

我在表单a中创建了一个getter函数:
public string getID()
        {
            return txtID.Text;
        }

然后我尝试在形式B中访问此方法:

string strID = getID();

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

另外,我尝试以这种方式访问函数(但它不起作用):

A.getID();

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

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

这意味着您需要在表单的实例上调用它。举个简单的例子:
FormA a = new FormA();
// Use a for a while, whatever
String id = a.getID();

现在,由于是FormA创建了FormB本身,它可能只需要使用this:

将对自身的引用传递给FormB
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的构造函数?