c# 一个winform调用另外一个winform的函数

一个主窗体Form,主窗体中两个按钮,分别创建另外两个子窗体。form1form2.。。两个子窗体都显示后,form1中一个按钮,点击后,调用form2中的一个函数执行一... 一个主窗体Form ,主窗体中两个按钮,分别创建 另外两个子窗体。form1 form2.。。
两个子窗体都显示后,form1中一个按钮,点击后,调用form2中的一个函数执行一段代码。

要求,在form1中点击按钮时,判断form2是否实例化,如果实例化了,就调用函数。未实例化,则不操作。

不要在form1的按钮事件中,Form2 fm2 = new Form2() 这样的操作。。。两个窗体都是单例的,由主窗体form创建了之后,不能再次创建。。。。。。

不知道描述是否清楚,有什么方法给解决一下,最好有个代码什么的。。。
邮箱gghaiyu@sohu.com 给弄个简单的例子看看。谢谢
展开
 我来答
yinfengnong
2013-05-22 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2298万
展开全部

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;
        }
    }


yuanwei64
2013-05-22 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:136万
展开全部
邮件已发送,记得采纳
追问
看到了。但是你这个程序是form1中调用自己的函数。
我想要的是form1中的按钮,调用form2中的函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahdung
2013-05-22 · TA获得超过609个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:267万
展开全部
思路:
1、form中将f2设为公共字段,对应窗体2的实例
2、在f1的构造函数中传入form实例
3、在f1的按钮事件中:
if (form.f2 != null)
{ form.f2.xx函数(); }

补充:f2中的该函数须为public
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式