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

看板C_Sharp (C#)作者 (以光為名)時間13年前 (2012/09/15 22:04), 編輯推噓0(008)
留言8則, 1人參與, 最新討論串4/6 (看更多)
※ 引述《proach (pazroach)》之銘言: : 其實我看不懂你的意思,交流一下,有錯請指教 :) : 關鍵字大概是 programatically add controls to ... 之類的術語, : 要動態產出一個 PictureBox 並不難,其實打開你的 Form1.designer.cs : 看一下照抄一次就出來了。要掛個 event handler 也是一樣的寫法。 : 要虛擬產生 click 也很簡單,用你的方法 thePic_Click( null, e ); : 還要去定義 e, 不如直接 thePic_Click( null, null); 也是會過的, : 只要你確定 method那邊不會用到 e 的內容即可。 這部分,由於我是會用到e的內容的,目前我用感覺很笨的方法處理, 直接寫一個按下的內容丟進去, MouseEventArgs m = new MouseEventArgs(MouseButtons.Left, 1, Pic.Location.X, Pic.Location.Y, 0); key_Click(Pic, m); 也就是在那個物件上面按一下左鍵的意思而已, 程式碼是過了,不過總覺得繞了不少遠路@@ : 我的問題是,既然物件是你動態產生的,你應該有它的名字,例如 : PictureBox pictureBoxRuntime; 之類的... 所以寫法都一樣, : 還是因為什麼因素,你在 runtime 時創造了不知道名字的 Control? 恩,因為其實是生成了很多個 創造的時候用了個簡單的for迴圈 Name的屬性是Pic+數字這樣 而且創造的內容是寫在Form_Load裡頭, 操作的程式碼在別的按鈕或函式裡面, 根本也呼叫不到@@(這部分是不是我有什麼弄錯了?), 說實在每次要去抓動態產生的物件都要Find一下我也很不喜歡呢( ̄ー ̄;) var ← 這個類別好像也不能放在外面當全域變數使用, (不然我很想這麼做,不然我次在不同的函式內要用都得Find一次) 我是很新的新手-.-...系上雖然有開課但都講得太淺, 大部分都是自己找資料摸索來的,感覺都是笨問題鬼打牆= = 感謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.160.79

09/16 01:21, , 1F
要弄成全域變數~應該只要在類別那層宣告成private Picture
09/16 01:21, 1F

09/16 01:22, , 2F
Box p = null; 這樣就好了~但是這樣還是沒辦法動態啊~就算
09/16 01:22, 2F

09/16 01:23, , 3F
產生出來弄在Hashtable裡面~還是一樣要弄個key來找~如果說
09/16 01:23, 3F

09/16 01:23, , 4F
find完之後在下個函式要用~一個就是弄成全域~另一個就是直
09/16 01:23, 4F

09/16 01:24, , 5F
接傳過去...
09/16 01:24, 5F
所以弄成全域是做得到囉? 我的想法裡面是希望可以直接在外層或是某個public class裡面var好 把該抓的動態元件都抓一抓,之後要使用就可以直接呼叫 不過似乎做不出來@@ ※ 編輯: stu87616 來自: 1.169.46.224 (09/16 01:32)

09/16 01:39, , 6F
先var好???這樣就變成動態程式碼了吧?動態產生程式碼是辦
09/16 01:39, 6F

09/16 01:40, , 7F
得到~但是新手...還是先不要搞這麼複雜吧...
09/16 01:40, 7F
哈哈 我剛剛在等你下一句推文還以為是辦不到 謝謝回答啦 我的問題也算是解決了 只是龜毛的想讓程式不要那麼複雜而已~ ※ 編輯: stu87616 來自: 1.169.46.224 (09/16 01:41)

09/16 01:48, , 8F
某種程度上是好事~是進步的動力~不要過於鑽牛角尖就好XD
09/16 01:48, 8F
文章代碼(AID): #1GL8hOk9 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #1GL8hOk9 (C_Sharp)