Winforn中使用代码动态生成控件
生活随笔
收集整理的這篇文章主要介紹了
Winforn中使用代码动态生成控件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
有時候需要根據配置文件在窗體中使用代碼動態生成控件。
比如讀取xml配置文件中的節點數量,然后在窗體中生成指定數量的RadioGroup控件。
實現
新建一個窗體,在窗體的加載完之后的事件中
?private void ChartOption_Load(object sender, EventArgs e){//根據配置文件路徑初始化圖形選項DialoginitChartOptionPane(Global.RADIO_GROUP_YAXIS_FILEPATH);}傳入配置文件路徑,然后生成控件。
?public void initChartOptionPane(string xmlFilePath){//不同組水平方向控件之間的距離 = 控件的寬度 + 組與組之間的距離int horizontalDistance = Global.NOGROUP_HORIZONTAL_DISTANCE + Global.CHART_OPTION_WIDTH;//獲取Y軸的listList<YAxisModel> yList = ChartOptionHelper.getYAxisList(xmlFilePath);//獲取配置文件中的radioGroup的選項List<string> radioGrupItems = initRadioGroupItem(Global.RADIO_GROUP_ITEM_FILEPATH);//生成對應組元素for (int i = 0; i < yList.Count; i++){//生成一個radioGroupRadioGroup radioGroup = new RadioGroup();foreach (string s in radioGrupItems){//每一個單元按鈕對應的選項itemRadioGroupItem item = new RadioGroupItem();//設置選項的value值item.Value = s;//設置選項的描述值 即 要顯示的值item.Description = s;//使選項啟用item.Enabled = true;//將新增的選項添加到radiogroup的Items中radioGroup.Properties.Items.Add(item);}//設置寬度radioGroup.Width = Global.CHART_OPTION_WIDTH;//加1 保留出空白選項的高度radioGroup.Height = Global.RADIO_HEIGHT * (radioGrupItems.Count + 1);//設置位置radioGroup.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE);this.Controls.Add(radioGroup);//添加下限輸入框TextEdit minTextEdit = new TextEdit();minTextEdit.Text = yList[i].Min.ToString();minTextEdit.Width = Global.CHART_OPTION_WIDTH;minTextEdit.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE * 2 + radioGroup.Height);this.Controls.Add(minTextEdit);//添加上限輸入框TextEdit maxTextEdit = new TextEdit();maxTextEdit.Text = yList[i].Max.ToString();maxTextEdit.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE * 3 + radioGroup.Height + minTextEdit.Height);maxTextEdit.Width = Global.CHART_OPTION_WIDTH;this.Controls.Add(maxTextEdit);//添加顏色選擇器ColorPickEdit colorPickEdit = new ColorPickEdit();colorPickEdit.Text = yList[i].Color;colorPickEdit.Width = Global.CHART_OPTION_WIDTH;colorPickEdit.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE * 4 + radioGroup.Height + minTextEdit.Height + maxTextEdit.Height);this.Controls.Add(colorPickEdit);}}注:
1.生成控件對象。
2.設置控件對象的顯示值text屬性以及寬度等屬性。
3.設置控件的位置。
4.將控件添加進窗體。
主要實現代碼:
? for (int i = 0; i < yList.Count; i++){//生成一個radioGroupRadioGroup radioGroup = new RadioGroup();foreach (string s in radioGrupItems){//每一個單元按鈕對應的選項itemRadioGroupItem item = new RadioGroupItem();//設置選項的value值item.Value = s;//設置選項的描述值 即 要顯示的值item.Description = s;//使選項啟用item.Enabled = true;//將新增的選項添加到radiogroup的Items中radioGroup.Properties.Items.Add(item);}//設置寬度radioGroup.Width = Global.CHART_OPTION_WIDTH;//加1 保留出空白選項的高度radioGroup.Height = Global.RADIO_HEIGHT * (radioGrupItems.Count + 1);//設置位置radioGroup.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE);this.Controls.Add(radioGroup);//添加下限輸入框TextEdit minTextEdit = new TextEdit();minTextEdit.Text = yList[i].Min.ToString();minTextEdit.Width = Global.CHART_OPTION_WIDTH;minTextEdit.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE * 2 + radioGroup.Height);this.Controls.Add(minTextEdit);//添加上限輸入框TextEdit maxTextEdit = new TextEdit();maxTextEdit.Text = yList[i].Max.ToString();maxTextEdit.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE * 3 + radioGroup.Height + minTextEdit.Height);maxTextEdit.Width = Global.CHART_OPTION_WIDTH;this.Controls.Add(maxTextEdit);//添加顏色選擇器ColorPickEdit colorPickEdit = new ColorPickEdit();colorPickEdit.Text = yList[i].Color;colorPickEdit.Width = Global.CHART_OPTION_WIDTH;colorPickEdit.Location = new Point(Global.NOGROUP_HORIZONTAL_DISTANCE + i * horizontalDistance, Global.GROUP_VERTICAL_DISTANCE * 4 + radioGroup.Height + minTextEdit.Height + maxTextEdit.Height);this.Controls.Add(colorPickEdit);}效果
?
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
總結
以上是生活随笔為你收集整理的Winforn中使用代码动态生成控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Winform中设置Dialog的显示位
- 下一篇: Winform中通过代码设置DevExp