作者liaommx (Orz)
看板C_Sharp
标题[问题] 如何将字串转换成元件名称?
时间Thu Apr 22 14:30:50 2010
四个checkbox
checkbox1
checkbox2
checkbox3
checkbox4
另有一个字串
string a="checkbox";
如果想用a字串当作判断,
判断是否有checked
for(int i=1;i<4;i++)
{
string a="checkbox";
a=a+i;
(将字串转换成元件名称)
if(a.checked==true)
messagebox.show(a+" checked");
}
请问上色那段程式码
要如何实现呢?
因为有许多checkbox要做一样的事情,
想说利用这种方法简化程式码.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.231.77
1F:→ kinwind:在asp.net上 我是会用FindControl 这个方法 04/22 14:42
2F:→ liaommx:我是用winform,也能用这方法? 04/22 14:50
3F:→ jhchou:winform可以用Controls.Find google一下用法吧 04/22 14:59
4F:→ liaommx:((CheckBox)this.Controls.Find(a, true)[0]).Checked == 04/22 15:17
5F:→ liaommx:搞定,感谢 04/22 15:17
6F:推 F23ko:等等 我记得这会出问题.... 当元件名称不一样时,会找不到 04/22 15:41
7F:→ F23ko:我记得板上有人问过类似的问题,他想用程式设定一大堆元件, 04/22 15:43
8F:→ F23ko:那时看到两种方法,其中一种就是这个,这也可行,但是会受到 04/22 15:43
9F:→ F23ko:命名的限制 04/22 15:44
10F:推 F23ko:另外一种适用foreach详细内容我现在爬文爬不到 = = 04/22 16:05
11F:→ jhchou:Find本来就是用名字来找control,名称不一样当然找不到啊 04/22 16:11
12F:→ jhchou:用foreach大概就是要自己把Controls里面每个都抓出来 04/22 16:13
13F:→ jhchou:看是不是自己要找的那个control了吧 04/22 16:14
14F:→ liaommx:我的方法是已知确切的名字,所以find应该就可以了 04/22 16:36
15F:推 chancewen:如果包在子控制项里面就...... 04/22 22:56
16F:推 ashram:要自己找的话就要用recursive 04/23 00:13