作者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
1F:→ stu87616:其实我找无头绪的时候真的有想过XD 但是卡在滑鼠使用的 09/16 16:44
2F:→ stu87616:座标是萤幕大小(0~65535) 而Form上的座标似乎是像素 09/16 16:45
3F:→ stu87616:(0~一千多,弄半天我也不清楚这是要怎麽换算ˊ_>ˋ) 09/16 16:45
4F:→ stu87616:最後当然还是放弃啦... 09/16 16:46