C_Sharp 板


LINE

※ 引述《stu87616 (以光为名)》之铭言: : 我动态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,依样画葫芦而已 依样画葫芦? 所以实际上根本没有 thePic_Click 这个方法? 可以试着在动态产生 PictureBox 时把 Click 事件加上去 都加同一个方法 原来的Click方法应该像这样: private void button1_Click(object sender, EventArgs e) 当事件触发的时候~可以把 sender 转回 PictureBox 靠 name 或其它方法去判断出是哪个动态物件 : 不知道哪里做错了,Google半天也理不出所以然来,只好来板上问问看众高手们。 : 另外再一问,像这样使用Controls.Find找出那些动态生成的物件的做法,是好的吗? : 这样问好像有点奇怪,只是我一直觉得这种做法似乎有点...大费周章? 感觉它是用for回圈去找全部的控制项? 但是除了 Controls.Find之外 其实它还有 Controls["name"] 和 Controls[index] 可以用 所以...它应该不是走访全部? google 了一下没找到答案 有请了解的版友解答 XD : 比起.Find,.GetChildAtPoint直接抓座标的做法(假设我很确定它就在那里)会比较优吗? : 恳请赐教 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.152.17
1F:推 stu87616:感谢大大的回答 经提醒似乎有直接抓名称的方法 而且似乎 09/15 19:29
2F:→ stu87616:会比较快 另外我应该是很确定有抓到我要的控制项 09/15 19:29
3F:→ stu87616:但是我不知道怎麽呼叫我先前写的Click事件 09/15 19:30
不知道怎麽呼叫? 如果照我说的~在动态产生的时候把事件加上去 那就不用特地去呼叫了啊? 因为已经绑上去了~不是吗? ※ 编辑: andymai 来自: 122.117.152.17 (09/15 19:44)
4F:推 stu87616:不太懂大大的意思..虽然绑了但还是给它命令才会动吧?! 09/15 20:02
绑了就会动了吧?有实际试过了吗?
5F:→ stu87616:我把我部分的cade贴上来 09/15 20:02
6F:→ stu87616:this.Controls.Add(Pic); 09/15 20:03
7F:→ stu87616:Pic.MouseDown += new MouseEventHandler(Pic_Click); 09/15 20:03
8F:→ stu87616:然後我下面再写 void Pic_Click(..)的内容 09/15 20:04
9F:→ stu87616:问题出在我不知道如何动态呼叫这个Pic_Click了 09/15 20:04
10F:→ stu87616:不知道是不是我哪里误解了@@ 09/15 20:05
11F:→ 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)
12F:推 stu87616:那Pic的MouseDown要如何呼叫呢@@? 09/16 01:14
13F:→ stu87616:我写过Pic.MouseDown(); 出现只可以出现在+=或-=左边的 09/16 01:15
14F:→ stu87616:错误讯息 09/16 01:15
@@ 所以你是要在程式中动态呼叫Pic_Click? 而不是动态产生PictureBox之後 使用者按下动态产生的PictureBox才触发Pic_Click? ※ 编辑: andymai 来自: 114.39.141.191 (09/16 01:18)
15F:推 stu87616:对对 我需要动态呼叫 不过也同时需要使用者按下触发 09/16 01:20
16F:→ 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)
17F:推 stu87616:感谢大大热心解说 是我一直往错误的方向去思考... 09/16 01:44
18F:→ stu87616:以为要用thePic_Click这种方式去呼叫Click 09/16 01:45







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP