c# 一个winform调用另外一个winform的函数
一个主窗体Form,主窗体中两个按钮,分别创建另外两个子窗体。form1form2.。。两个子窗体都显示后,form1中一个按钮,点击后,调用form2中的一个函数执行一...
一个主窗体Form ,主窗体中两个按钮,分别创建 另外两个子窗体。form1 form2.。。
两个子窗体都显示后,form1中一个按钮,点击后,调用form2中的一个函数执行一段代码。
要求,在form1中点击按钮时,判断form2是否实例化,如果实例化了,就调用函数。未实例化,则不操作。
不要在form1的按钮事件中,Form2 fm2 = new Form2() 这样的操作。。。两个窗体都是单例的,由主窗体form创建了之后,不能再次创建。。。。。。
不知道描述是否清楚,有什么方法给解决一下,最好有个代码什么的。。。
邮箱gghaiyu@sohu.com 给弄个简单的例子看看。谢谢 展开
两个子窗体都显示后,form1中一个按钮,点击后,调用form2中的一个函数执行一段代码。
要求,在form1中点击按钮时,判断form2是否实例化,如果实例化了,就调用函数。未实例化,则不操作。
不要在form1的按钮事件中,Form2 fm2 = new Form2() 这样的操作。。。两个窗体都是单例的,由主窗体form创建了之后,不能再次创建。。。。。。
不知道描述是否清楚,有什么方法给解决一下,最好有个代码什么的。。。
邮箱gghaiyu@sohu.com 给弄个简单的例子看看。谢谢 展开
3个回答
展开全部
Form1 调用 Form2的代码,可以利用 委托进行实现,写了一个例子参考一下
//主窗体
public partial class MainForm : Form
{
private Form1 form1 = null;
private Form2 form2 = null;
public MainForm()
{
InitializeComponent();
form1 = new Form1();
form2 = new Form2();
//传递 Form2 的 Fun1 方法 到 Form1 的委托
form1.Function = new Form1.FunctionDelegate(form2.Fun1);
}
private void btnForm1_Click(object sender, EventArgs e)
{
form1.Show();
}
private void btnForm2_Click(object sender, EventArgs e)
{
form2.Show();
}
}
//Form1
public partial class Form1 : Form
{
//定义一个委托类型
//根据需要可以修改是否带参数和返回值
public delegate void FunctionDelegate(string text);
//些委托的值 由 Form2 函数 给出
public FunctionDelegate Function;
public Form1()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
//如果委托不为空时,进行调用
if (Function != null) {
Function("Hello");
}
}
}
//Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
//定义一个由 Form1 调用的方法
//此方法的参数和返回值要和Form2的委托一致
public void Fun1(string text)
{
label1.Text = text;
}
}
展开全部
邮件已发送,记得采纳
追问
看到了。但是你这个程序是form1中调用自己的函数。
我想要的是form1中的按钮,调用form2中的函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路:
1、form中将f2设为公共字段,对应窗体2的实例
2、在f1的构造函数中传入form实例
3、在f1的按钮事件中:
if (form.f2 != null)
{ form.f2.xx函数(); }
补充:f2中的该函数须为public
1、form中将f2设为公共字段,对应窗体2的实例
2、在f1的构造函数中传入form实例
3、在f1的按钮事件中:
if (form.f2 != null)
{ form.f2.xx函数(); }
补充:f2中的该函数须为public
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询