两个窗体实时相互传递值 有两个窗体Form1、Form2,且每个窗体上有文本框和发送按钮一个,在Form1窗体上的文本框写入字符后,点击发送按钮,信息立即传到Form2的文本框中,同理在Form2中输入或修改字符后,点击发送按钮可传到Form1文本框架中,可多次传送,最好使用delegate方案,请问各位仁兄弟姐妹解答,笔者在此表示感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.Show(this); } } public partial class Form2 : Form { private void button1_Click(object sender, EventArgs e) { Form1 frm1 = (Form1)this.Owner; ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text; this.Close(); } } delegatehttp://www.codeproject.com/KB/cs/passdatadelegate.aspx 1. 创建一个 BaseForm(两个控件:TextBox和Button)public partial class BaseForm : Form{ public BaseForm() { InitializeComponent(); } // 定义一个发送消息的事件 public event Action<string> SendMessage; // 定义一个Property,接受要监听的另一个窗体 public BaseForm ListenedForm { get; set; } private void button1_Click(object sender, EventArgs e) { if (SendMessage != null) SendMessage(this.textBox1.Text); } private void BaseForm_Load(object sender, EventArgs e) { if (DesignMode) return; // 如果监听窗体存在,注册监听处理 if (ListenedForm != null) ListenedForm.SendMessage += x => this.textBox1.Text = x; }}2.创建两个Form1,Form2 继承 BaseForm。public partial class Form1 : BaseFormpublic partial class Form2 : BaseForm3.创建一个启动Form(MainForm)public partial class MainForm : Form{ public MainForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form1 f1 = new Form1(); Form2 f2 = new Form2(); f1.ListenedForm = f2; f2.ListenedForm = f1; f1.Show(); f2.Show(); }} 我觉得楼主可以试用两种方案:1、采用消息机制,即试用Win32下的SendMessage()方法用来在两个窗体之间传递值。2、采用事件机制,在Form1和Form2中定义事件,分别在Form1和Form2中响应响应事件。 C#新建cs中为啥datagridview没数据的? messagebox 两个按钮的问题 数组排序出了问题?? 菜菜散分!!!!!!怎么能不显button焦点!!!!!!!!! 怎么样DropDownList显示两个字段(在线等) 正则匹配 大侠们帮忙下 如何在WINFORM程序中实现类似QQ、MSN之类的聊天窗口,像网页那样显示信息。 求助:金额格式化(在线等) 急需:C#语句如何HOOK API tooltip 闪烁 win7旗舰版安装Visual Studio 2010 Ultimate失败 网上找了各种办法均失败啊,急救!! C#的传值问题
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);
}
} public partial class Form2 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
this.Close();
}
}
delegate
http://www.codeproject.com/KB/cs/passdatadelegate.aspx
public partial class BaseForm : Form
{
public BaseForm()
{
InitializeComponent();
}
// 定义一个发送消息的事件
public event Action<string> SendMessage; // 定义一个Property,接受要监听的另一个窗体
public BaseForm ListenedForm { get; set; } private void button1_Click(object sender, EventArgs e)
{
if (SendMessage != null)
SendMessage(this.textBox1.Text);
} private void BaseForm_Load(object sender, EventArgs e)
{
if (DesignMode) return;
// 如果监听窗体存在,注册监听处理
if (ListenedForm != null)
ListenedForm.SendMessage += x => this.textBox1.Text = x;
}
}2.创建两个Form1,Form2 继承 BaseForm。
public partial class Form1 : BaseForm
public partial class Form2 : BaseForm3.创建一个启动Form(MainForm)
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
Form2 f2 = new Form2(); f1.ListenedForm = f2;
f2.ListenedForm = f1; f1.Show();
f2.Show();
}
}
1、采用消息机制,即试用Win32下的SendMessage()方法用来在两个窗体之间传递值。
2、采用事件机制,在Form1和Form2中定义事件,分别在Form1和Form2中响应响应事件。