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

Posted

tags:

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

参考技术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 这个还不简单吧,你要判断一下容器宽度及当前一个控件如果放置后的left+width是不是在你的容器内,如果不在你就要换行(top+n)

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

根据需求要在Winform的一个panel中动态的添加控件,处理完后删除(子线程中操作):
for(n)

while (panel1.Controls.Count > 0)

panel1.Invoke((Action)delegate

panel1.Controls.Remove(panel1.Controls[0]);
);

panel1中根据条件动态添加控件
……
处理
……

跟踪发现内存持续增加。难道是因为panel1.Controls.Remove(panel1.Controls[0]);没有清理干净内存?

参考技术A 你只是移除了!!没有释放啊!!
while (panel1.Controls.Count > 0)

panel1.Invoke((Action)delegate

Control C=panel1.Controls[0]);
panel1.Controls.Remove(C);
C.Dispose();
);
本回答被提问者和网友采纳
参考技术B 这个最好是看下添加控件部分的代码,主要是创建实例的部分 参考技术C remove 又不回收内存
该有引用的还是要引用到对象上

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

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

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

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

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

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

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