ToB企服应用市场:ToB评测及商务社交产业平台

标题: C# 动态创建Label和ComboBox控件并修改Text获取Text [打印本页]

作者: 宁睿    时间: 2025-1-23 16:06
标题: C# 动态创建Label和ComboBox控件并修改Text获取Text
配景:在做项目标时间可能需要根据一定数量创建某些控件并修改其属性,本文以控件label、ConboBox控件进行动态创建。
  程序运行前后的的Form动态图


代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace C__动态创建label和combobox控件
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         private List<KeyValuePair<Label, ComboBox>> dynamicControls;
  15.         public Form1()
  16.         {
  17.             dynamicControls = new List<KeyValuePair<Label, ComboBox>>();
  18.             InitializeComponent();
  19.             CreateDynamicControls();
  20.         }
  21.         private void CreateDynamicControls()
  22.         {
  23.             for(int i=0;i<6;i++)
  24.             {
  25.                 Label label = new Label();
  26.                 label.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
  27.                 label.Text = $"相机{i + 1}";
  28.                 label.Location = new System.Drawing.Point(50, 10 + i * 30);
  29.                 ComboBox comboBox = new ComboBox();
  30.                 comboBox.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
  31.                 comboBox.Items.AddRange(new object[] { "Option 1", "Option2", "Option3" });
  32.                 comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
  33.                 comboBox.Location = new System.Drawing.Point(150, 10 + i * 30);
  34.                 comboBox.Width = 500;
  35.                 this.Controls.Add(label);
  36.                 this.Controls.Add(comboBox);
  37.                 dynamicControls.Add(new KeyValuePair<Label, ComboBox>(label, comboBox));
  38.             }
  39.         }
  40.         //保存动态控件的文本信息
  41.         private void SaveDynamicControlText()
  42.         {
  43.             foreach (var pair in dynamicControls)
  44.             {
  45.                 Console.WriteLine($"Label:{pair.Key.Text},ComboBox:{pair.Value.SelectedItem}");
  46.             }
  47.         }
  48.     }
  49. }
复制代码
源代码下载

下载链接腾讯云盘
https://share.weiyun.com/ouZjoUzF
获取List列表中的Text

   List<KeyValuePair<Label, ComboBox>> dynamicControls 怎么获取combobox中text属性或者Label中的text?
  遍历列表

如果利用C#,而且假设Label和ComboBox是Windows Forms相关的控件类型。起首需要遍历dynamicControls列表。
以下是示例代码:
  1. foreach (KeyValuePair<Label, ComboBox> pair in dynamicControls)
  2. {
  3.     // 获取ComboBox中的Text属性
  4.     string text = pair.Value.Text;
  5.     string textlabel=pair.key.Text;
  6.     // 这里可以对获取到的text进行进一步处理,比如输出或者存储等操作
  7.     Console.WriteLine(text);
  8. }
复制代码
错误处置惩罚

在现实应用中,需要确保ComboBox已经被正确初始化而且有值。如果在获取Text属性之前ComboBox没有被正确设置值,可能会得到空字符串或者引发非常。
比方,可以在获取Text属性之前先检查ComboBox是否有SelectedItem:
  1. foreach (KeyValuePair<Label, ComboBox> pair in dynamicControls)
  2. {
  3.     string textlabel=pair.key.Text;
  4.     if (pair.Value.SelectedItem!= null)
  5.     {
  6.         string text = pair.Value.Text;
  7.         Console.WriteLine(text);
  8.     }
  9.     else
  10.     {
  11.         // 可以进行相应的提示或者处理逻辑,比如记录日志等
  12.         Console.WriteLine("ComboBox has no selected item.");
  13.     }
  14. }
复制代码
  List<KeyValuePair<Label, ComboBox>> dynamicControls combobox添加多个值后在combobox上表现
  创建和初始化ComboBox

起首,假设你已经有了List<KeyValuePair<Label, ComboBox>>类型的dynamicControls。对于每个ComboBox,你可以利用Items.Add方法来添加多个值。
比方:
  1. foreach (var controlPair in dynamicControls)
  2. {
  3.     ComboBox comboBox = controlPair.Value;
  4.     comboBox.Items.Add("Value1");
  5.     comboBox.Items.Add("Value2");
  6.     comboBox.Items.Add("Value3");
  7. }
复制代码
设置表现属性

如果要让ComboBox表现添加的值,通常它会默认表现第一个添加的值。如果要设置特定的表现值,可以利用SelectedIndex属性。
比方,如果要表现第二个添加的值(索引为1,由于索引从0开始):
  1. foreach (var controlPair in dynamicControls)
  2. {
  3.     ComboBox comboBox = controlPair.Value;
  4.     comboBox.SelectedIndex = 1;
  5. }
复制代码
  List<KeyValuePair<Label, ComboBox>> dynamicControls 点击变乱为什么只有一个控件响应该变乱?
  正确的办理办法

  1.         private void ImageSetting_Load(object sender, EventArgs e)
  2.         {           
  3.             foreach (var ClickPair in dynamicControls)
  4.             {
  5.                 ClickPair.Value.Click += new EventHandler(comboBox_Click);
  6.             }
  7.             LoadFrameSeriaml();
  8.         }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4