表單間 ShowDialog()、DialogResult.OK 的用法
範例如下
Form1.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
if (form2.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = form2.ToGetValue();//從form2取值設定到form1
}
}
}
}
Form2.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public string ToGetValue()
{
return this.textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
//this.Close();
//this.Dispose();
}
}
}
說明:
1、當於 A 表單 instance 裡,執行 B 表單的 ShowDialog() 方法時,將會把該 B 表單給打開。
2、當 B 表單的 DialogResult 屬性被明確指定 DialogResult 的值之後,
其動作將會關閉 B 表單,而回到 A 表單;
此時不用特別去把 B 表單做 .Close() 或是 .Dispose() 方法,系統會自動處理。
3、而於 A 表單 instance 裡呼叫 B 表單的 ShowDialog() 方法後,也會回傳 B 表單的 DialogResult 狀態。
參考資料: