c# 子窗口控制父窗体的方法。和使用父窗口的控件,
如题,子窗口1是打开的,父窗体也是打开的1,所以不能用new调用父窗体,New调用的话,就等于是新建了一个窗体了。就不能用到已经打开的父窗体的方法了,等于是要控制已经打开...
如题,
子窗口1是打开的,
父窗体也是打开的1,
所以不能用new调用父窗体,New调用的话,就等于是新建了一个窗体了。
就不能用到已经打开的父窗体的方法了,等于是要控制已经打开的父窗体的参数。 展开
子窗口1是打开的,
父窗体也是打开的1,
所以不能用new调用父窗体,New调用的话,就等于是新建了一个窗体了。
就不能用到已经打开的父窗体的方法了,等于是要控制已经打开的父窗体的参数。 展开
3个回答
展开全部
很简单的,首先你需要在父窗体中定义一个委托
namespace WindowsFormsApplication1
{
public delegate void Handled1();//定义一个委托
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//需要子窗体执行的方法
private void ShowForm()
{
MessageBox.Show("Test");
}
private void button4_Click(object sender, EventArgs e)
{
//创建子窗体,并将需要执行的方法传递到子窗体去
Form2 f = new Form2(ShowForm);
f.Show();
}
}
}
然后在子窗体中使用这个委托
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
Handled1 _hand = null;//使用在父窗体中定义的委托
//将委托定义为子窗体的构造器参数
public Form2(Handled1 hand)
{
InitializeComponent();
_hand = hand;
}
private void button1_Click(object sender, EventArgs e)
{
_hand();//调用父窗体中的方法
}
}
}
使用委托相对要麻烦一点,你想简单的话,也可以直接将父窗体传递到子窗体去,像这样改下就行了
Form _form = null;
//将基类定义为子窗体的构造器参数
public Form2(Form from)
{
InitializeComponent();
_form = from;
}
//调用父窗体的方法就变成这样
_form.ShowForm();
当然父窗体中创建子窗体时,就应该这样了
//创建子窗体,并将父窗体传递到子窗体去
Form2 f = new Form2(this);
f.Show();
忘了一点,那个在子窗体调用的方法不能再是private的了,一定要改成public的,这样才能在子窗体中使用。
展开全部
把父窗体作为参数传递给子窗体。父窗体可以定义一些public控件,把自身控件赋值给它,供子窗体调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-09-14 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:1197
获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监
向TA提问 私信TA
关注
展开全部
方式一:
在子窗体中定义 父窗体的引用,使用该引用操作父窗体的功用方法和变量
方式二:
在Progam类中定义static的父窗体引用,这样在所有的子窗体中都可以使用该引用来操作父窗体
比如:
public static MainForm mainForm;
public static Main()
{
.......
mainForm=new MainForm();
Appliection.Run(mainForm);
}
调用时
子窗体中:Program.mainForm.变量=XXX;
建议使用第二种方式
3其它方式:使用构造传递引用方式
在子窗体中定义 父窗体的引用,使用该引用操作父窗体的功用方法和变量
方式二:
在Progam类中定义static的父窗体引用,这样在所有的子窗体中都可以使用该引用来操作父窗体
比如:
public static MainForm mainForm;
public static Main()
{
.......
mainForm=new MainForm();
Appliection.Run(mainForm);
}
调用时
子窗体中:Program.mainForm.变量=XXX;
建议使用第二种方式
3其它方式:使用构造传递引用方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询