C# winform动态添加控件获取值问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform动态添加控件获取值问题相关的知识,希望对你有一定的参考价值。

我在panel中添加了groupBox,在groupBox中动态添加label和RadioButton。现在想获取所有label和RadioButton的值 放进list里面,要怎么做。以下是代码,但出错

foreach (Control con in panel1.Controls)

if (con is GroupBox)

foreach (Control c in con.Controls)
if (c is Label||c is RadioButton)

string Str = ((Label)c).Text;
string Stt = ((RadioButton)c).Text;
list.Add(Str);
list.Add(Stt);





Console.WriteLine(list);
错误提示:无法将类型 label 的对象强制转换为类型RadioButton。求大神

参考技术A if (c is Label||c is RadioButton)

string Str = ((Label)c).Text;
string Stt = ((RadioButton)c).Text;
list.Add(Str);
list.Add(Stt);

这是有问题啊,得分别判断是label还是RadioButton 然后再添加到list中。而且一次只能循环一个控件也不能一次就能把两中同时都能添加进去啊

应该这样改吧,你参考一下:
if (c is Label)

string Str = ((Label)c).Text;
list.Add(Stt);

if (c is RadioButton)

string Stt = ((RadioButton)c).Text;
list.Add(Str);
参考技术B foreach (Control con in panel1.Controls)

if (con is GroupBox)

string Str="";
foreach (Control c in con.Controls)
if (c is Label)

Str = ((Label)c).Text;

else if(c is RadioButton)

Stt = ((RadioButton)c).Text;

list.Add(Stt);



参考技术C 分开判断就得了呗
if (c is Label)

string Str = ((Label)c).Text;
list.Add(Str);

else if(c is RadioButton)

string Stt = ((RadioButton)c).Text;
list.Add(Stt);
追问

但是,控件的值添加不到 list 里面,Console.WriteLine(list);这个输出依然是
System.Collections.Generic.List'1[System.String]

本回答被提问者采纳

C# winform 由id获取该控件!

我动态生成string a,如何获取ID为a的控件,以及该控件的位置。又是一天编程~

C#Control里没有ID这个属性只有Name属性 其实就是ID的意思 你可以根据Name属性找到这个控件 代码如下 private void button1_Click(object sender, EventArgs e)

string name = "label1";
Control control = null;
foreach (Control item in this.Controls)

control = GetControl(name, item);
if (control != null)

MessageBox.Show("类型是:" + control.GetType().ToString() + "\r\n" +
"坐标是:" + control.Location.ToString());
break;


if (control == null)

MessageBox.Show("没有找到“"+name+"”");


private Control GetControl(string name, Control parent)

foreach (Control Item in parent.Controls)

if (Item.Name == name)

return Item;

else

Control control = GetControl(name, Item);
if (control != null)

return control;



return null;
参考技术A Button btn=(Button)容器名.Controls["a"];
btn...操作

参考技术B 遍历窗体中所有的控件,然后使用if条件判断,找到你想要控件就可以了

以上是关于C# winform动态添加控件获取值问题的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm 自定义控件如何实现动态添加子控件

C# WinForm 如何动态添加控件和设计控件布局

C# WinForm 动态添加-删除控件内存未释放

c#(winform)combobox手动添加的选项怎么获取value?

C# WinForm 如何动态添加控件和设计控件布局

c# 中如何在GroupBox控件中动态添加与移除控件