在C# WinForm程式中建立控制項數組及相應的事件處理

來源:互聯網
上載者:User

標籤:winform   blog   http   java   io   width   for   re   

控制項數組是VB提供的一個優秀的設計解決方案,它能很方便快捷的處理大批同類控制項的響應和時間處理,但不知為什麼在C#中這個優秀特性沒有傳承下來,甚為可惜,本文將要探討就是如何在C# WinForm程式實現它.
首先請看介面
在上面的介面中,本人想實現一個42個元素的Button數組來實現一個日曆的功能,上面顯示出了一部分. 其中採用了網格布局來放置這些按鈕.
手工建立為全部按鈕後,在表單類中代碼中定義成員變數控制項數組: private Button[] btns;
然後在建構函式中初始化: btns = new Button[42];

btns[0] = this.button1; btns[1] = this.button2; ...... btns[40] = this.button41; btns[41] = this.button42;
大家不禁要問了,如果採用動態建立豈不更好.其實不然,我採用手工建立的主要原因是手工放置調整按鈕的位置和大小較為方便,如果動態建立出來的話,把他們放到介面上比較麻煩,尤其是在比較複雜的布局中.
然後是為上述數組中的各個控制項添加事件: for (int i = 0; i < btns.Length;i++ )  {         btns[i].Click += new System.EventHandler(this.btns_Click); } 如果是要根據下標添加不同事件也可以的,做一些分支即可. C#的這種做法類似JavaSwing中AddActionListener做法,發揮以下我們也可用C#實現MVC.
最後定義btns_Click事件處理函數就行了: // 按鈕數組的事件處理 private void btns_Click(object sender, System.EventArgs e){     String[] arrs = ((Button)sender).Text.Split(‘\n‘);

    String day = arrs[0];

    if (day.Length < 2)     {   day = "0" + day;     }

    String date = currMonthLbl.Text + "-" + day;

    mainForm.RefreshDatePanel(date); }
從上面可以看出,將sender用Button強制轉化一下就能得到事件對應的控制項,然後根據它的Text屬性可以進行唯一性判斷,其後再進行單獨處理即可.
總結起來,在C#中建立控制項數組很簡單,首先在類中建立一個控制項類型的數組,然後初始化它,具體初始化是動態建立還是連結到已有控制項可以根據情況自行選擇,然後為數組元素添加事件,最後實現事件即可,在事件實現中即可以通過轉化sender來得到相應控制項.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.