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

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

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

    春風博客

    春天里,百花香...

    導航

    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    公告

    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 閱讀(8010) 評論(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://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 最近高清中文字幕免费| 国产精品免费看久久久 | 亚洲日本一区二区| 黄桃AV无码免费一区二区三区 | 中文字幕天天躁日日躁狠狠躁免费| 亚洲精品无码久久久久| 中文字幕在线观看免费| 亚洲精品中文字幕乱码三区| 在线免费观看伊人三级电影| 国产国拍亚洲精品mv在线观看| 日韩在线永久免费播放| 亚洲黄色免费电影| 国产美女在线精品免费观看| 亚洲天堂免费在线| 免费一级毛片在线播放| 免费国产污网站在线观看不要卡 | 亚洲va中文字幕无码久久| 午夜爽爽爽男女免费观看影院| 亚洲国产av一区二区三区丶| 日韩伦理片电影在线免费观看| 人妻无码中文字幕免费视频蜜桃 | 亚洲一区免费视频| 四虎永久在线免费观看| 精品人妻系列无码人妻免费视频| 亚洲精品在线观看视频| 成人爽A毛片免费看| 美女裸体无遮挡免费视频网站| 亚洲精品无码不卡在线播HE| 1000部拍拍拍18勿入免费视频软件| 亚洲国产精品无码中文lv| 亚洲日本中文字幕一区二区三区 | 美女黄色免费网站| 亚洲国产精品久久久久网站| 四虎国产精品免费久久| 深夜福利在线视频免费| 色播亚洲视频在线观看| 国产高清在线精品免费软件| 男的把j放进女人下面视频免费| 亚洲精华国产精华精华液好用| 亚洲码国产精品高潮在线| 成人最新午夜免费视频|