[問題] 如何將字串轉換成元件名稱?

看板C_Sharp作者 (Orz)時間16年前 (2010/04/22 14:30), 編輯推噓4(4012)
留言16則, 6人參與, 最新討論串1/1
四個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

04/22 14:42, , 1F
在asp.net上 我是會用FindControl 這個方法
04/22 14:42, 1F

04/22 14:50, , 2F
我是用winform,也能用這方法?
04/22 14:50, 2F

04/22 14:59, , 3F
winform可以用Controls.Find google一下用法吧
04/22 14:59, 3F

04/22 15:17, , 4F
((CheckBox)this.Controls.Find(a, true)[0]).Checked ==
04/22 15:17, 4F

04/22 15:17, , 5F
搞定,感謝
04/22 15:17, 5F

04/22 15:41, , 6F
等等 我記得這會出問題.... 當元件名稱不一樣時,會找不到
04/22 15:41, 6F

04/22 15:43, , 7F
我記得板上有人問過類似的問題,他想用程式設定一大堆元件,
04/22 15:43, 7F

04/22 15:43, , 8F
那時看到兩種方法,其中一種就是這個,這也可行,但是會受到
04/22 15:43, 8F

04/22 15:44, , 9F
命名的限制
04/22 15:44, 9F

04/22 16:05, , 10F
另外一種適用foreach詳細內容我現在爬文爬不到 = =
04/22 16:05, 10F

04/22 16:11, , 11F
Find本來就是用名字來找control,名稱不一樣當然找不到啊
04/22 16:11, 11F

04/22 16:13, , 12F
用foreach大概就是要自己把Controls裡面每個都抓出來
04/22 16:13, 12F

04/22 16:14, , 13F
看是不是自己要找的那個control了吧
04/22 16:14, 13F

04/22 16:36, , 14F
我的方法是已知確切的名字,所以find應該就可以了
04/22 16:36, 14F

04/22 22:56, , 15F
如果包在子控制項裡面就......
04/22 22:56, 15F

04/23 00:13, , 16F
要自己找的話就要用recursive
04/23 00:13, 16F
文章代碼(AID): #1Bp-qS7V (C_Sharp)