写一个Windows Forms程序,包含两个窗口,在主窗口中加一个按钮,点击主窗口弹出子窗口,在子窗口中加一个按钮和一个文本框,在文本框中输入
字符,点击子窗口的按钮,通过事件把文本框的内容传递给主窗口,在主窗口中,加一个多行文本框显示子窗口传过来的消息。
分别建立子窗口和主窗口,如下图所示。
![](http://hi.csdn.net/attachment/201201/19/0_132696346392i4.gif)
![](http://hi.csdn.net/attachment/201201/19/0_13269634886SPS.gif)
ChildForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsForm
{
//========================================================================
// クラス名 : ChildForm
/// <summary>
/// ChildForm
/// </summary>
/// <remarks>
///
/// </remarks>
//========================================================================
public partial class ChildForm : Form
{
/// <summary>
/// AddEventHandler
/// </summary>
/// <remarks>
/// 给子窗口添加委托
/// </remarks>
/// <param name="sender"></param>
/// <param name="args"></param>
public delegate void AddEventHandler(object sender, string args); //委托
/// <summary>
/// Add
/// </summary>
/// <remarks>
/// 给子窗口添加事件
/// </remarks>
public event AddEventHandler Add; //事件
//========================================================================
// コンストラクタ名 : ChildForm
/// <summary>
/// ChildForm
/// </summary>
//========================================================================
public ChildForm()
{
InitializeComponent();
}
//========================================================================
// メソッド名 : butSub_Click
/// <summary>
/// 子窗口单击鼠标时触发的事件
/// </summary>
/// <remarks>
/// 将文本框的值添加到事件中去,
/// </remarks>
/// <param name="sender"></param>
/// <param name="e"></param>
//========================================================================
private void butSub_Click(object sender, EventArgs e)
{
//获得子窗口中文本框的值。
string text = this.txtSub.Text.ToString();
if (Add != null)
{
Add(this, text);
}
}
//========================================================================
// メソッド名 : ChildForm_Load
/// <summary>
/// ChildForm_Load
/// </summary>
/// <remarks>
/// 加载子窗口
/// </remarks>
/// <param name="sender"></param>
/// <param name="e"></param>
//========================================================================
private void ChildForm_Load(object sender, EventArgs e)
{
}
}
}
MainForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsForm
{
//========================================================================
// クラス名 : MainForm
/// <summary>
/// MainForm
/// </summary>
/// <remarks>
/// 主窗口中加一个按钮,点击主窗口弹出子窗口
/// </remarks>
//========================================================================
public partial class MainForm : Form
{
/// <summary>接收子窗口的字符串</summary>
public string childtext = "";
//========================================================================
// コンストラクタ名 : MainForm
/// <summary>
/// MainForm
/// </summary>
//========================================================================
public MainForm()
{
InitializeComponent();
}
//========================================================================
// メソッド名 : butClk_Click
/// <summary>
/// 主窗口单击鼠标事触发的事件
/// </summary>
//========================================================================
private void butClk_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();
childForm.Add += new ChildForm.AddEventHandler(child_Add);
childForm.Show();
}
//========================================================================
// メソッド名 : child_Add
/// <summary>
///
/// </summary>
/// <remarks>
///
/// </remarks>
/// <param name="sender"></param>
/// <param name="args"></param>
//========================================================================
void child_Add(object sender, string args)
{
this.txtBox.Text += args + "\r\n";
}
//========================================================================
// メソッド名 : MainForm_Load
/// <summary>
/// MainForm_Load
/// </summary>
/// <remarks>
/// 加载主窗口时,调用主窗口txtBox传值的方法
/// </remarks>
/// <param name="sender"></param>
/// <param name="e"></param>
//========================================================================
private void MainForm_Load(object sender, EventArgs e)
{
this.txtBox.Text = this.childtext.ToString();
}
}
}
Main
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}