推 stu87616:感謝大大的回答 經提醒似乎有直接抓名稱的方法 而且似乎 09/15 19:29
→ stu87616:會比較快 另外我應該是很確定有抓到我要的控制項 09/15 19:29
→ stu87616:但是我不知道怎麼呼叫我先前寫的Click事件 09/15 19:30
不知道怎麼呼叫?
如果照我說的~在動態產生的時候把事件加上去
那就不用特地去呼叫了啊? 因為已經綁上去了~不是嗎?
※ 編輯: andymai 來自: 122.117.152.17 (09/15 19:44)
推 stu87616:不太懂大大的意思..雖然綁了但還是給它命令才會動吧?! 09/15 20:02
綁了就會動了吧?有實際試過了嗎?
→ stu87616:我把我部分的cade貼上來 09/15 20:02
→ stu87616:this.Controls.Add(Pic); 09/15 20:03
→ stu87616:Pic.MouseDown += new MouseEventHandler(Pic_Click); 09/15 20:03
→ stu87616:然後我下面再寫 void Pic_Click(..)的內容 09/15 20:04
→ stu87616:問題出在我不知道如何動態呼叫這個Pic_Click了 09/15 20:04
→ stu87616:不知道是不是我哪裡誤解了@@ 09/15 20:05
→ stu87616:啊 打太快打錯了 是code 09/15 20:05
不用再額外去呼叫Pic_Click啊
既然你已經寫了 Pic.MouseDown += new MouseEventHandler(Pic_Click);
那在Pic的MouseDown就會觸發Pic_Click這個方法啊...
原PO應該還沒搞清楚EventHandler的用意?
如果是這樣~建議看一下delegate並找個簡單的範例實做
然後想一下~這樣做的用義在哪裡?
接著有空再看delegate和eventhandler的差別...
※ 編輯: andymai 來自: 114.39.141.191 (09/16 01:15)
推 stu87616:那Pic的MouseDown要如何呼叫呢@@? 09/16 01:14
→ stu87616:我寫過Pic.MouseDown(); 出現只可以出現在+=或-=左邊的 09/16 01:15
→ stu87616:錯誤訊息 09/16 01:15
@@ 所以你是要在程式中動態呼叫Pic_Click?
而不是動態產生PictureBox之後
使用者按下動態產生的PictureBox才觸發Pic_Click?
※ 編輯: andymai 來自: 114.39.141.191 (09/16 01:18)
推 stu87616:對對 我需要動態呼叫 不過也同時需要使用者按下觸發 09/16 01:20
→ stu87616:動態呼叫會寫在別的地方(別的函式) 09/16 01:20
@@?
那在程式動態呼叫時應該要先知道是要處理哪個PictureBox吧?
個人目前想到的會是下面這樣:
PictureBox p = null;
for(int i = 0; i < X; i++)
{
p = new PictureBox();
p.Name = "pic" + i;
p.MouseDown += new MouseEventHandler(Pic_Click);
this.Controls.Add(p);
}
private void Pic_Click(object sender, MouseDownEventArgs)
{
//經由sender判斷要處理哪一個PictureBox
MessageBox.Show("Click " + ((PictureBox)sender).Name);
}
這樣就可以在程式中也呼叫Pic_Click
把想要處理的PictureBox傳進去處理了
手邊沒VS~所以這段code沒編過
但我想應該差不多了...
※ 編輯: andymai 來自: 114.39.141.191 (09/16 01:37)
推 stu87616:感謝大大熱心解說 是我一直往錯誤的方向去思考... 09/16 01:44
→ stu87616:以為要用thePic_Click這種方式去呼叫Click 09/16 01:45