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

看板C_Sharp (C#)作者 (pazroach)時間13年前 (2012/09/15 21:10), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/6 (看更多)
※ 引述《stu87616 (以光為名)》之銘言: : 我動態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直接抓座標的做法(假設我很確定它就在那裏)會比較優嗎? : 懇請賜教 其實我看不懂你的意思,交流一下,有錯請指教 :) 關鍵字大概是 programatically add controls to ... 之類的術語, 要動態產出一個 PictureBox 並不難,其實打開你的 Form1.designer.cs 看一下照抄一次就出來了。要掛個 event handler 也是一樣的寫法。 要虛擬產生 click 也很簡單,用你的方法 thePic_Click( null, e ); 還要去定義 e, 不如直接 thePic_Click( null, null); 也是會過的, 只要你確定 method那邊不會用到 e 的內容即可。 我的問題是,既然物件是你動態產生的,你應該有它的名字,例如 PictureBox pictureBoxRuntime; 之類的... 所以寫法都一樣, 還是因為什麼因素,你在 runtime 時創造了不知道名字的 Control? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.202.200
文章代碼(AID): #1GL7vNe- (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1GL7vNe- (C_Sharp)