作者stu87616 (以光为名)
看板C_Sharp
标题[问题] 如何触发动态产生的物件的Click事件
时间Sat Sep 15 02:25:17 2012
我动态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直接抓座标的做法(假设我很确定它就在那里)会比较优吗?
恳请赐教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.162.163.215
※ 编辑: stu87616 来自: 1.162.163.215 (09/15 02:27)
1F:推 qwer820404:注册事件不是都用 EventHandler处理吗 09/15 17:17
2F:推 qwer820404:要注意一下 你注册给动态产生的picturebox那个事件 09/15 17:23
3F:推 qwer820404:做什麽处理用的... 我不太了解你说用name抓到object後 09/15 17:29
4F:→ qwer820404:然後 thePic_Click(null,e) 单纯呼叫click事件?? 09/15 17:30
对,我写的注册码是
Pic.MouseDown += new MouseEventHandler(Pic_Click);
然後下面再写
void Pic_Click(object sender, MouseEventArgs e)
{~~~~~}
大概是这样
用Name抓到object後,就是很单纯的呼叫Click事件没错
※ 编辑: stu87616 来自: 1.162.160.79 (09/15 19:23)