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。
答案 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
)字段,属性或方法。
您无需将表单存储为字段即可引用它。您可以将它作为参数传递给方法调用。