1. 程式人生 > >C#子視窗呼叫父視窗控制元件的委託實現

C#子視窗呼叫父視窗控制元件的委託實現

        有時子窗體的操作需要實時呼叫父窗體中的控制元件操作,比如在父窗體的文字框中顯示子窗體中的輸出:

主窗體:

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);
        }
    }