0
点赞
收藏
分享

微信扫一扫

C# winform 主窗体与子窗体互相传递消息的例子 (一)


主窗体向子窗体传递信息

描述:主窗体form1上有button1,点击button1,则弹出子窗体form2。
form2上有随便一个什么控件,比如一个text2.
form1上还有另外一个button2,
要求点击button2,则text2文本框的内容变为 button2点击时候传递过来的内容。

其中用到三个cs文件,

一个是Form1.cs, 一个是 Form2.cs
另一个是用于传参的,专门自建的MyEventArg.cs.

使用evnet方式传参。
不多说,直接上源码,简单易懂可运行,完事。

Form1.cs:

using System;
using System.Windows.Forms;

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

public event EventHandler Main2SlaveMsgEvent;


private void button1_Click(object sender, EventArgs e)
{

Form2 form2 = new Form2();

Main2SlaveMsgEvent += form2.textChange;

form2.Show();
}

private void button2_Click(object sender, EventArgs e)
{
MyEventArg eee = new MyEventArg()
{
Text = DateTime.Now.Second.ToString()
};

Main2SlaveMsgEvent.Invoke(this,eee);
}
}
}

Form2.cs

using System;
using System.Windows.Forms;

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

public void textChange(object sender, EventArgs e)
{
var a = e as

MyEventArg.cs

using System;

namespace WindowsFormsApp1
class MyEventArg : EventArgs
//传递主窗体的数据信息
public string Text { get; set; }
}
}

直接可运行,完事。

注意直接从主窗体可以这样通过event传消息给子窗体,但我写的同样的方式,子窗体传给主窗体,主窗体似乎却不能显示。
尽管MessageBox.Show() 是可以的。
这个怎么办呢?


举报

相关推荐

0 条评论