看板 C_Sharp 關於我們 聯絡資訊
我動態new了幾個PictureBox出來, 並且+=給它們Click的事件, 讓使用者在按下這些圖片的時候會有所動作; 但另外我也想在別的地方,某些別的事件也會觸發按下那些圖片的事件。 通常已經存在的物件(並且有Click事件), 要從別的地方觸發Click很簡單,大概就像是: button_Click(null, e); 但動態生成出來的PictureBox就不知道怎麼寫了, 我現在的寫法是: var thePic = (PictureBox)Controls.Find("物件Name", true)[0]; //先用Name屬性把我要的物件抓出來 thePic_Click(null ,e); //就我所知道寫法是這樣...不過沒過,編譯器是完全看不懂的程度 //順帶一提我的PictureBox Click觸發函式名稱就是Pic_Click,依樣畫葫蘆而已 不知道哪裡做錯了,Google半天也理不出所以然來,只好來板上問問看眾高手們。 另外再一問,像這樣使用Controls.Find找出那些動態生成的物件的做法,是好的嗎? 這樣問好像有點奇怪,只是我一直覺得這種做法似乎有點...大費周章? 比起.Find,.GetChildAtPoint直接抓座標的做法(假設我很確定它就在那裏)會比較優嗎? 懇請賜教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.163.215 ※ 編輯: stu87616 來自: 1.162.163.215 (09/15 02:27)
qwer820404:註冊事件不是都用 EventHandler處理嗎 09/15 17:17
qwer820404:要注意一下 你註冊給動態產生的picturebox那個事件 09/15 17:23
qwer820404:做什麼處理用的... 我不太了解你說用name抓到object後 09/15 17:29
qwer820404:然後 thePic_Click(null,e) 單純呼叫click事件?? 09/15 17:30
對,我寫的註冊碼是 Pic.MouseDown += new MouseEventHandler(Pic_Click); 然後下面再寫 void Pic_Click(object sender, MouseEventArgs e) {~~~~~} 大概是這樣 用Name抓到object後,就是很單純的呼叫Click事件沒錯 ※ 編輯: stu87616 來自: 1.162.160.79 (09/15 19:23)