天天看點

activex控件 新對象 ocx 初始化_C# Win Form 動态添加CheckBox控件

有時候在Win Form開發過程中,視窗顯示的控件如單選、複選框等,需要根據資料庫讀取資料的結果動态生成指定數量的控件。是以涉及到動态生成指定數量的控件,并定義生成控件的事件等。本文主要以CheckBox為例對動态控件添加進行說明,為C#初學者提供參考與借鑒。首選給出本案例需求視窗:

activex控件 新對象 ocx 初始化_C# Win Form 動态添加CheckBox控件

案例Form

本例所用Form視窗如上圖所示,問題:要求在生成chart圖表時,根據統計結果即柱狀圖的數量,動态生成右側CheckBox,并實作初始狀态全部CheckBox為選中狀态,改變選中數量時左側圖示自動顯示對應柱狀圖。

解決問題思路:

(1)擷取查詢記錄集的數量(要生成多少個CheckBox執行個體對象)

int cnt=ds.Tables[0].Rows.Count;//ds存儲查詢結果,查詢過程略,cnt即為記錄集條數
           

(2)對通過new 執行個體化的CheckBox如何存儲?(本例需要生成三個checkbox)

C#中本身不提供長度未知的動态數組,是以不能直接使用數組對執行個體化後對象進行存儲,本例設計使用ArrayList實作長度未知動态數組功能。

al = new ArrayList();//al是本例定義的變量,在load中進行初始化,初始化成功之後可存儲checkbox;
           

(3) 循環建立CheckBox執行個體

for(int m=0;m
           

在建立checkbox執行個體的同時,由于控件是動态建立的,是以需要手動定義消息處理,實作checkbox的點選事件。所有的checkbox都響應check_Click事件:

temp.Click += new System.EventHandler(Check_Click);//綁定事件處理函數
           

(4) check_Click事件編寫

該事件主要周遊所有動态生成的checkbox擷取其狀态構造查詢語句,實作對記錄集ds資料進行篩選。由于所有checkbox都響應該事件,是以需要object sender參數接收被點選的控件,通過arraylist al表示全部的checkbox,并以此為基礎進行操作。

private void Check_Click(object sender, EventArgs e) { CheckBox ck = (CheckBox)sender;//接收目前點選checkbox for(int m = 0; m < al.Count; m++) { CheckBox cbk = (CheckBox)al[m]; if (cbk.Checked) { //循環周遊checkbox,擷取每一個checkbox狀态,構造查詢語句條件 } }}
           

以上完成了動态checkbox的建立及消息響應設定,可以進一步實作根據checkbox選擇顯示Chart不同内容了。主要實作代碼如下:

chart1.Update();// 使區域無效chart1.DataSource = ds.Tables[0].Select(str);//對ds記錄集進行篩選。str參數在checkbox響應函數中定義;
           

至此本案例全部功能可以得到實作,最終實作效果如本文開頭部分給出的運作效果截圖。近期本頭條号重點對C# Win Form程式設計基礎知識進行說明。往期文章請點選連結閱讀:

Win Form登入框本地記住密碼功能實作C# Win Form 程式設計實作圖檔的資料庫存儲C# Win Form 實作XML檔案讀寫C# Win Form 讀取CSV檔案資料

本頭條号長期關注于青少年程式設計資訊分享;程式設計課程、素材、代碼分享及青少年程式設計教育訓練。如果您對以上方面有興趣,可關注該頭條号,如有程式設計學習問題可以聯系作者,共同探讨。

繼續閱讀