请问c# 在form.load 中用代码动态生成的控件,在form的其他控件中如何将这个控件删除?

c#.net 的窗体应用程序中, 在form.load() 中用代码动态生成的控件,在form的其他控件中如何将这个控件删除?谢谢

没什么区别吧,在其他控件的事件中获取到动态生成的控件(通过name什么的都可以),移除掉它就是了,都是一个窗体,没有什么难度。希望对你有帮助,还有疑问请追问或是Hi追问

在其他控件的事件中如何获取到动态生成的控件(通过name什么的都可以),能给个代码举例说明吗?谢谢!

追答

比如你动态生成了一个TextBox,名称为txtExample,现在你要在按钮点击事件中移除它,那么就在按钮点击事件中查找这个控件,然后移除就是了:
foreach (Control control in this.Controls)
if (control.Name == "txtExample")
this.Controls.Remove(control);
也可以根据控件类型来查找,或是移除多个控件,都是一个道理,先找到它,然后操作它,希望对你有帮助

追问

太谢谢了,成功啦!再请教如果从一个窗体Form1中点击按钮打开一个Form2窗体,再从Form2窗体点击一个按钮中删除Form1窗体上的某个控件,又改如何编写代码呢?控件都是通过代码添加的,希望能给出代码举例说明,再次感谢!

追答

同样的道理,只是多找一下窗体而已,比如你要移除Form1上名为textBox1的控件,那么在Form2的按钮事件中找到窗体,再找到控件,就可以操作了:
foeach(Form form in Application.OpenForms)
if(from.Name=="Form1")
foreach(Control control in form.Controls)
if(control.Name=="textBox1")
form.Controls.Remove(control);
当然还有其它的方式,比如使用委托、改变对象的可见性级别、将窗体本身做为参数传递等等,这里是根据前一个回答来的,便于理解,希望对你有帮助

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-08
把控件声明为全局变量就可以在各个代码段访问了。
相似回答