2013年12月25日 星期三

C# 動態建立事件




筆記:C# 動態建立事件。
1.建立一個 Window 應用程式。
2.拉一個 groupBox ,並且放入幾個 TextBox 及 ComboBox 排成一直行。
3.接下來完成下面的 code ,就可以用上下鍵在各個 TextBox 間移動。


        private void Form1_Load(object sender, EventArgs e)
        {
            // 跑回圈。
            // groupBox1.Controls Controls 代表 groupBox 中所有物件。
            foreach (Control ctl in groupBox1.Controls)
            {
                // 針對不同的物件,各自動態建立事件。
                if (ctl is TextBox)
                {
                    // Form Load 時動態建立 txt_KeyDown 事件。
                    //        打到 += 之後(↓這裡),按下 Tab鍵,便會自動產生事件。
                    ((TextBox)ctl).KeyDown += new KeyEventHandler(txt_KeyDown);
                    // Form Load 時動態建立 txt_GotFocus 事件。
                    ((TextBox)ctl).GotFocus += new EventHandler(txt_GotFocus); 
                }
                else if (ctl is ComboBox)
                {
                    // Form Load 時動態建立 txt_KeyDown 事件。
                    ((ComboBox)ctl).KeyDown += new KeyEventHandler(txt_KeyDown);
                    // Form Load 時動態建立 txt_GotFocus 事件。
                    ((ComboBox)ctl).GotFocus += new EventHandler(txt_GotFocus);

                }

            }
        }

        void txt_GotFocus(object sender, EventArgs e)
        {
            // 宣告 txt,將 sender 轉型成 TextBox 後,用 txt 承接
            // 這種轉型的方法,看很多次,還是不懂啊....
            TextBox txt = (TextBox)sender;
            txt.SelectAll();
        }

        private void txt_KeyDown(object sender, KeyEventArgs e)
        {
            // C# select case
            switch (e.KeyCode)
            {

                case Keys.Down:
                case Keys.Return:
                    // 送出 Tab 鍵的訊號
                    SendKeys.Send("{Tab}");
                    break;
                case Keys.Up:
                    // 送出 Shift + Tab 鍵的訊號
                    // +」號代表 Shift
                    SendKeys.Send("+{Tab}");
                    break;
                default:
                    break;
            }
        }

沒有留言:

張貼留言