C#子視窗呼叫父視窗控制元件的委託實現
阿新 • • 發佈:2019-02-01
有時子窗體的操作需要實時呼叫父窗體中的控制元件操作,比如在父窗體的文字框中顯示子窗體中的輸出:
主窗體:
MainForm.cs: public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { SubForm SubForm = new SubForm(); // 3.將ChangeTextVal加入到委託事件中 // 等效於: // SubForm.ChangeTextVal += ChangeTextVal; SubForm.ChangeTextVal += new DelegateChangeTextVal(ChangeTextVal); SubForm.ShowDialog(); } public void ChangeTextVal(string TextVal) { this.textBox1.Text = TextVal; } }
子窗體:
SubForm.cs: // 1.定義委託型別 public delegate void DelegateChangeTextVal(string TextVal); public partial class SubForm : Form { // 2.定義委託事件 public event DelegateChangeTextVal ChangeTextVal; public SubForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ChangeMainFormText(this.textBox1.Text); } private void ChangeMainFormText(string TextVal) { // 4.呼叫委託事件函式 ChangeTextVal(TextVal); } }