<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    春風博客

    春天里,百花香...

    導航

    <2015年12月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    在C# WinForm程序中創建控件數組及相應的事件處理

    控件數組是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來得到相應控件.


    posted on 2007-08-04 08:18 sitinspring 閱讀(8009) 評論(2)  編輯  收藏 所屬分類: Object Orient Programming

    評論

    # re: 在C# WinForm程序中創建控件數組及相應的事件處理[未登錄] 2009-03-29 15:50 Pony

    萬一Text屬性的屬性值有相同,應該如何處理,最好能夠知道當前元素在數組中的下標  回復  更多評論   

    # re: 在C# WinForm程序中創建控件數組及相應的事件處理 2015-12-16 11:52 xl

    謝謝分享!你幫了我一個大忙!大贊!~~~~~~~~~~~~~~~~~
    cool  回復  更多評論   

    sitinspring(http://www.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲日本一区二区一本一道| 激情综合色五月丁香六月亚洲| 久久久久久国产a免费观看黄色大片| 免费观看男人免费桶女人视频| 在线观看亚洲成人| j8又粗又长又硬又爽免费视频| 色se01短视频永久免费| 亚洲国产精品yw在线观看| 免费人成大片在线观看播放电影| 69pao强力打造免费高清| 亚洲人成网站18禁止一区 | 成av免费大片黄在线观看 | 免费无遮挡无码视频网站| 中文字幕亚洲综合久久综合| 你懂的网址免费国产| 日韩a在线观看免费观看| 亚洲视频在线观看网站| 中文在线免费视频| 色噜噜AV亚洲色一区二区| 97在线视频免费公开视频| 亚洲美女人黄网成人女| 中字幕视频在线永久在线观看免费| 久久精品国产亚洲AV麻豆不卡| 日韩毛片在线免费观看| 国产亚洲成归v人片在线观看| 美景之屋4在线未删减免费| 在线免费观看中文字幕| 亚洲youjizz| 麻豆国产精品免费视频| 日本久久久久亚洲中字幕| 中文字幕无码一区二区免费| 久久久久亚洲精品无码网址| 免费黄色电影在线观看| 国产亚洲真人做受在线观看| 久久www免费人成精品香蕉| 亚洲区小说区图片区| 日本xxxx色视频在线观看免费| 午夜影视日本亚洲欧洲精品一区| 国产成人无码区免费内射一片色欲| 亚洲精品456在线播放| 国产精品免费精品自在线观看|