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

C# 如何以不同的形式访问getter函数?,c#,.net,winforms,C#,.net,Winforms,我在一个项目/名称空间中有两个表单需要相互通信。表格A创建表格B的一个实例;表单B需要访问表单a中的值(看起来很简单) 我在VB中从头开始构建表单时创建了这种类型的功能。这一次我正在处理一个预先存在的项目,我无法让表格B访问表格a的值。是什么导致了这个问题,我该如何解决它 谢谢你的帮助 我在表单a中创建了一个getter函数: public string getID() { return txtID.Text; } 然后我尝试以表格B访问

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

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

谢谢你的帮助

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

public string getID()
        {
            return txtID.Text;
        }
然后我尝试以表格B访问此方法:

string strID = getID();
我得到的错误是:“当前上下文中不存在名称'getID'”

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

您声明了一个实例方法(由于某种原因而不是属性,并且忽略了.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
的构造函数?

我没有粘贴问题中使用的代码,而是一个示例来说明发生了什么。如果表单A存在并创建了表单B,我为什么要创建表单A的实例?@Azzi:我只是给出了一个调用实例方法的示例。请参阅我编辑的答案-无论您做什么,FormB都需要引用FormA的相关实例,以便调用实例方法(或属性)。它如何获得该引用取决于您。重要的是你要理解为什么它是必要的——我建议你暂时放下GUI,回到C#的基础上。(GUI本身就已经够复杂的了——在我看来,一次学习一件事是件好事。)表单B确实需要稍后获得值。我以前用VB中的一个公共getter完成了这个任务。@Azzi:那么表单B需要引用FormA的实例。就这么简单。如果没有实例可以调用实例方法,则无法调用实例方法。这就像问:“贝隆的生日是什么?”而没有具体说明你在谈论谁。VB假设表单只有一个实例,这可能会让事情变得混乱。
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(); 
    }
}