如何从另一个表单设置变量值?

时间:2010-03-21 02:16:14

标签: c# .net winforms

c#.Net 3.5 visual studio 2008,windows xp

我在项目中有一个主窗体,给定一组特定情况,另一个窗体被实例化并显示给用户:

Form frmT = new frmTargetFolder(expName, this);
        frmT.Show();

正如您所看到的,我正在传递对当前新表单的引用。我的问题是,我需要对方法做些什么才能使它暴露给新形式,对变量也是如此?

我已经尝试将这些函数定义为public,但我似乎无法访问它们,我也为变量编写了Get和Set方法,再次如何将这些函数和方法公开给其他表单?

public void hit()
    {
        MessageBox.Show("hit it");
    }


bool setOverRide
    {
        get
        {
            return OverRide;
        }
        set 
        {
            OverRide = value;

        }
    } 

主窗体名为frmDataXfer,我试图调用frmDataXfer的函数和方法的窗体,形式称为frmTargetFolder,其实例在frmDataXfer中创建,并引用为frmT。

谢谢,R。

4 个答案:

答案 0 :(得分:1)

这里已经讨论了类似于你问题的东西..

无论如何要访问表单类的变量,只需将变量设为public即可使用该类的对象访问它

简单示例:

class Test : Form
{
    ___public int variable = 10; // visible!
    ___public Test() {}
}

This可能会有所帮助。

答案 1 :(得分:0)

您需要将frmDataXfer的实例存储为frmTargetFolder类中的字段,然后调用该实例上的方法。

答案 2 :(得分:0)

您的setOverride媒体资源未标记为public。除了不应该以这种方式命名属性这一事实(setOverride听起来像方法的名称,而不是属性),类成员的默认访问修饰符是private。您需要将public修饰符添加到要公开的所有成员。


编辑:

再次查看代码,问题显然在这里:

Form frmT = new frmTargetFolder(expName, this);
frmT.Show();

写这个,你只会获得属于Form类成员的方法/属性。这不包括您添加到特定表单类的任何成员。您的代码需要写成:

frmTargetFolder frmT = new frmTargetFolder(expName, this);
frmT.Show();

如果您将其声明为正确的类型,则可以针对新属性进行编码。

答案 3 :(得分:0)

请记住,表单是与其他类似的首要类,它们只是从System.Windows.Forms.Form继承,以赋予它特殊的UI函数。

即便如此,如果您拥有该对象的实例,则可以访问任何public(或同一项目中的internal)字段,属性或方法。

您无需将表单存储为字段即可引用它。您可以将它作为参数传递给方法调用。