C#(winform)中如何循环用户控件? C#(winform)中如何循环用户控件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://hi.baidu.com/dwxgundam/blog/item/8606a9a74732b2b5caefd0f1.html给LZ提供思路 C#(winform)中如何循环用户控件?例如创建了个火车车厢的用户控件,现在要循环的显示到窗体上,火车的节数是数据库查询的结果 使用foreach能举个例子吗?我这个是winform WINFORM方法也差不多啊!拖好控件,然后调用我给网址那个方法就可以了 递归public ArrayList GetControls() { ArrayList controls = new ArrayList(); GetDetailControl(ref controls, this); return controls; } private void GetDetailControl(ref ArrayList collection, Control control) { foreach (Control c in control.Controls) { collection.Add(c); if (c.Controls.Count > 0) GetDetailControl(ref collection, c); } } 反正今天还在放假,帮LZ调试了下按钮的代码 private void button1_Click(object sender, EventArgs e) { FindTextBox(this); } //创建方法protected void FindTextBox(Control c) { if (c.Controls != null) { foreach (Control x in c.Controls) { if (x is TextBox) { ((TextBox)x).Text = ""; } FindTextBox(x); } } } 点击按钮就会遍历全部textbox 控件并且 全部清空 就像asp.net的datalist一样,数据库查出的值是多少,例如是a=10,那么在窗体上显示10个一样的控件 不是吧, 这问题~~~~int temp = 10;//这是未知的数量,从数据库获取TextBox tb ;for(int i=0;i<temp;i++){ tb = new TextBox(); tb.Location = new Pooint(x,y);//x y 自己想办法计算位置,看你要多少个控件一排? this.Panel1.Controls.Add(tb);//添加到你要显示的容器中去} 每次remove掉所有的控件,数据库查出来之后10之后,new10个控件,添加到controls里 创建一个车厢控件,New 100个实例之后统统 Controls.Add("Ctrl")。难道不能成功?for(int i=0;i<100;i++){ TrainBox box = new TrainBox (); box.Name="box" + i.ToString(); Train.Boxes.Add(box);}南车就这样造了一列火车了,楼主你再New一个火车头加到前面去吧。 再加一条语句:tb.Show();或tb.Visable = true; LZ不好意思 ,我写的代码没有测试,但思路就那样了,嘿嘿, 问题能解决就OK啦 大家帮我看看是什么问题 还是关于txt导出excel的问题 多线程并发更新数据库引发的问题 请问C#在DllImport 中调用C++ dll 的时候, dll 能否使用相对路径,而不是使用绝对路径 正则表达式替换<img>中src问题 问下csdn 的消息通知模式 如何将字符串拆分? C#与.NET3.5高级程序设计中文(第4版)的下载地址 求一个正则表达式 请教:关于自定义控件边框的问题 Winform窗体四角变的圆滑,求救~!!!急急急 求c# winform DataGridView导出word格式
给LZ提供思路
例如创建了个火车车厢的用户控件,现在要循环的显示到窗体上,火车的节数是数据库查询的结果
public ArrayList GetControls()
{
ArrayList controls = new ArrayList(); GetDetailControl(ref controls, this); return controls;
} private void GetDetailControl(ref ArrayList collection, Control control)
{
foreach (Control c in control.Controls)
{
collection.Add(c); if (c.Controls.Count > 0)
GetDetailControl(ref collection, c);
}
}
private void button1_Click(object sender, EventArgs e)
{
FindTextBox(this);
}
//创建方法
protected void FindTextBox(Control c)
{
if (c.Controls != null)
{
foreach (Control x in c.Controls)
{
if (x is TextBox)
{
((TextBox)x).Text = "";
}
FindTextBox(x);
}
}
}
int temp = 10;//这是未知的数量,从数据库获取
TextBox tb ;
for(int i=0;i<temp;i++)
{
tb = new TextBox();
tb.Location = new Pooint(x,y);//x y 自己想办法计算位置,看你要多少个控件一排?
this.Panel1.Controls.Add(tb);//添加到你要显示的容器中去
}
难道不能成功?for(int i=0;i<100;i++)
{
TrainBox box = new TrainBox ();
box.Name="box" + i.ToString();
Train.Boxes.Add(box);
}南车就这样造了一列火车了,楼主你再New一个火车头加到前面去吧。
tb.Show();
或
tb.Visable = true;
LZ不好意思 ,我写的代码没有测试,但思路就那样了,嘿嘿, 问题能解决就OK啦