在C#两个窗口形式之间进行通信 [英] Communicate between two windows forms in C#

查看:94
本文介绍了在C#两个窗口形式之间进行通信的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两种形式,一种是主要形式,另一种是期权的形式。所以说,例如,用户点击我的主窗体菜单上:工具 - >选项​​,这将导致显示我的选择形式。

I have two forms, one is the main form and the other is an options form. So say for example that the user clicks on my menu on the main form: Tools -> Options, this would cause my options form to be shown.

我的问题是我怎么能发送数据从我的选择形成回我的主要形式?我知道我可以使用属性,但我有很多的选择,这似乎是一个<击>繁琐奇怪的事情。

My question is how can I send data from my options form back to my main form? I know I could use properties, but I have a lot of options and this seems like an tedious odd thing to do.

那么,什么是最好的方式?

So what is the best way?

编辑:这些都是一些很好的答案,但我不是一个伟大的程序员。能否请您提供有关如何做你说什么一些教程。谢谢!

These are some good answers, but I'm not a great programmer. Can you please provide some tutorials on how to do what your saying. Thanks!

推荐答案

Form1中触发窗体2打开。窗体2已重载构造函数调用需要的形式作为参数,并提供了其引用到窗体2的成员。这解决了通信问题。比如我接触label属性为Form1的公众这是在Form2的修改。

Form1 triggers Form2 to open. Form2 has overloaded constructor which takes calling form as argument and provides its reference to Form2 members. This solves the communication problem. For example I've exposed Label Property as public in Form1 which is modified in Form2.

通过这种方法,你可以做不同的方式沟通。

With this approach you can do communication in different ways.

有关示例项目 下载链接

Download Link for Sample Project

// 您的Form1中

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(this);
        frm.Show();
    }

    public string LabelText
    {
        get { return Lbl.Text; }
        set { Lbl.Text = value; }
    }
}

// 您的窗体2

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private Form1 mainForm = null;
    public Form2(Form callingForm)
    {
        mainForm = callingForm as Form1; 
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.mainForm.LabelText = txtMessage.Text;
    }
}

这篇关于在C#两个窗口形式之间进行通信的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆