作者iterator (rotareti)
看板C_Sharp
標題Re: [問題] 如何觸發動態產生的物件的Click事件
時間Sun Sep 16 16:25:12 2012
動態產生一堆功能相近的 control, 通常會 "放在一起",
這時候可以把這些 control 放在一個 container 裡面,
例如說放在一個 Panel 內, 然後裡面(也就)不要放其他同 type 的 control.
當你需要對這些動態產生的 control 進行操作時,
就透過這樣一段程式碼:
foreach (var pb in panel1.Controls.OfType<PictureBox>()) { ... }
就可以撈出在 panel1 內的 PictureBox.
如果需要再對這些 PictureBox 做判斷, 就:
panel1.Controls.OfType<PictureBox>()
.Where((pb) => pb.Name.StartWith("..."))
或是利用 Control.Tag 放些更複雜的 object 來描述該 control.
接下來呼叫 event func 的部分就如同上面大家所述,
將這些 PictureBox 的相關資料, 餵給 event handler 即可.
--------------------------------------------------------------------------
如果想要做的是 "真正模擬滑鼠 click", (但我想這不是你現在要的)
可以透過 Win32 API, 參考下面 URL 內的做法:
1. 透過 Cursor.Position 以及 mouse_event API
http://www.pinvoke.net/default.aspx/user32.mouse_event
2. 透過 SendMessage API 傳送 Window Message
http://go4answers.webhost4life.com/Example
/simulate-mouse-click-certain-position-61774.aspx
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.23.102
→ stu87616:其實我找無頭緒的時候真的有想過XD 但是卡在滑鼠使用的 09/16 16:44
→ stu87616:座標是螢幕大小(0~65535) 而Form上的座標似乎是像素 09/16 16:45
→ stu87616:(0~一千多,弄半天我也不清楚這是要怎麼換算ˊ_>ˋ) 09/16 16:45
→ stu87616:最後當然還是放棄啦... 09/16 16:46