<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://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲伦理中文字幕| 亚洲欧洲另类春色校园小说| 亚洲av无码成人影院一区| 亚洲尹人九九大色香蕉网站| 在线观着免费观看国产黄| 51在线视频免费观看视频| 好吊色永久免费视频大全 | 欧美日韩亚洲精品| 亚洲图片激情小说| 亚洲国产成人一区二区精品区 | 亚洲福利视频网站| 亚洲第一区在线观看| 岛国大片免费在线观看| 91成年人免费视频| 精品无码人妻一区二区免费蜜桃| 国产产在线精品亚洲AAVV| 日本一区二区三区日本免费| 亚洲啪啪免费视频| 三年片在线观看免费观看大全动漫| 免费看黄福利app导航看一下黄色录像 | 亚洲国产综合专区在线电影 | 一级毛片在线播放免费| 午夜亚洲乱码伦小说区69堂| 亚洲av无码成人精品国产| 亚洲精品久久无码| 国产精品亚洲片在线va| 亚洲高清视频免费| 亚洲AV无码成人精品区天堂| 国产精品亚洲片在线| 亚洲AV无码乱码精品国产| 国产a视频精品免费观看| 在线看片免费人成视频播 | 在线综合亚洲欧洲综合网站| 亚洲国产精品人久久| 精品久久久久久亚洲| 国产日产亚洲系列| 亚洲无码视频在线| 亚洲午夜精品久久久久久浪潮| 亚洲日本va午夜中文字幕久久 | j8又粗又长又硬又爽免费视频| 午夜在线免费视频 |