看板 C_Sharp 關於我們 聯絡資訊
※ 引述《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
stu87616:我現在採用了一個不知道好不好的做法 寫一個public class 09/16 16:39
stu87616:裡面放了很多 public static PictureBox Pic_0~127 09/16 16:40
stu87616:然後Find的函式放在Form_Load裡面 這樣就只需要抓一次 09/16 16:41
stu87616:之後提取的時候直接使用class裡面的成員 09/16 16:42
stu87616:這樣的做法是Find函式使用的次數的確變少 但是我多花不 09/16 16:42
stu87616:少記憶體來儲存這些動態生成的PictureBox 09/16 16:43
andymai:事先弄好的缺點你自己也說了~而且...這樣不算動態~如果使 09/16 17:09
andymai:用者要產生超過128個呢? XD 09/16 17:09
stu87616:噢XD 忘了沒說過 我這個project正好就是只會生出128個 09/16 17:11