功能描述:
兩個窗體,父窗體:Form1,子窗體:Form2。
1.點擊父窗體的(按鈕1),出現子窗體。
在子窗體的文本框輸入字符串
2.點擊子窗體的(按鈕2),子窗體消失,同時將文本框中內容傳送給父窗體。
父窗體文本框顯示獲得值。
很簡單的功能(不過網上很多人喜歡裝,回答往往高深莫測,弄得人一頭霧水)。
詳細代碼如下:
Form1的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowToWindow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
if (frm2.DialogResult == DialogResult.OK)
{
textBox1.Text = frm2.tt;
frm2.Close();
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Form2的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowToWindow
{
public partial class Form2 : Form
{
public string tt
{
get { return textBox1.Text; }
}
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
}
}
關鍵點有兩個,一是實現值的傳遞,這個比較簡單,就是在form2 中設置幾個公共變量
如:
public string tt
{
get { return textBox1.Text; }
}
這裡的get 是為了更方便地獲取form2中textbox1.text的值,也可以不用這個方法,直接在form2的(按鈕2)點擊事件中為tt賦值;
二是實現點擊按鈕後form2可以消失,這裡在form1的(按鈕1)點擊事件中進行。通過form2的DialogResult屬性判斷是否關閉form2。
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
if (frm2.DialogResult == DialogResult.OK)//確認form2的(按鈕2)已點擊
{
textBox1.Text = frm2.tt;
frm2.Close();//關閉form2
}
}
form2的DialogResult屬性是在他的(按鈕2)的點擊事件中設置的
this.DialogResult = DialogResult.OK;//點擊(按鈕2),設置FORM2的DialogResult
為什麼不直接在(按鈕2)的點擊事件中設置關閉form2呢,原因很簡單,這樣做的話就不方便向form1傳遞值了。