Re: [問題] 如何觸發動態產生的物件的Click事件

看板C_Sharp (C#)作者 (pazroach)時間13年前 (2012/09/16 10:05), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串5/6 (看更多)
※ 引述《stu87616 (以光為名)》之銘言: : ※ 引述《proach (pazroach)》之銘言: : : 還是因為什麼因素,你在 runtime 時創造了不知道名字的 Control? : 恩,因為其實是生成了很多個 : 創造的時候用了個簡單的for迴圈 : Name的屬性是Pic+數字這樣 : 而且創造的內容是寫在Form_Load裡頭, : 操作的程式碼在別的按鈕或函式裡面, : 根本也呼叫不到@@(這部分是不是我有什麼弄錯了?), : 說實在每次要去抓動態產生的物件都要Find一下我也很不喜歡呢( ̄ー ̄;) : var ← 這個類別好像也不能放在外面當全域變數使用, : (不然我很想這麼做,不然我次在不同的函式內要用都得Find一次) 其實差不多就是 andymi 講的那樣吧? 在 runtime 時產生了很多的 Controls, 但 method 是在寫程式時寫的, 因此你只能將動態產生的 Controls共用同一個或數個 method. 例如產生 List<Button> MyButtons, 生出一百個之後,通通都是 MyButtons[i].Click += new EventHander( Shared_Method ); 之後在 Shared_Method( objet sender,... )內,用 sender確認 是誰被按到的。我用過三個方法,前兩個跟您相同,看 Name 決定, 或是掃瞄座標來決定,另一個是直接掃瞄所有的 MyButtons, 看誰 == 就是他啦。 我比較喜歡在產生時,就生出一個特定的字串當 Name,抓到 sender的 Name 之後,直接 switch做動作。 不過以上的方法我都沒測過執行效率,或者有高手可以指點一二,感謝感謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.199.21

09/16 16:39, , 1F
我現在採用了一個不知道好不好的做法 寫一個public class
09/16 16:39, 1F

09/16 16:40, , 2F
裡面放了很多 public static PictureBox Pic_0~127
09/16 16:40, 2F

09/16 16:41, , 3F
然後Find的函式放在Form_Load裡面 這樣就只需要抓一次
09/16 16:41, 3F

09/16 16:42, , 4F
之後提取的時候直接使用class裡面的成員
09/16 16:42, 4F

09/16 16:42, , 5F
這樣的做法是Find函式使用的次數的確變少 但是我多花不
09/16 16:42, 5F

09/16 16:43, , 6F
少記憶體來儲存這些動態生成的PictureBox
09/16 16:43, 6F

09/16 17:09, , 7F
事先弄好的缺點你自己也說了~而且...這樣不算動態~如果使
09/16 17:09, 7F

09/16 17:09, , 8F
用者要產生超過128個呢? XD
09/16 17:09, 8F

09/16 17:11, , 9F
噢XD 忘了沒說過 我這個project正好就是只會生出128個
09/16 17:11, 9F
文章代碼(AID): #1GLJG2q4 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1GLJG2q4 (C_Sharp)