作者stu87616 (以光为名)
看板C_Sharp
标题Re: [问题] 如何触发动态产生的物件的Click事件
时间Sat Sep 15 22:04:03 2012
※ 引述《proach (pazroach)》之铭言:
: 其实我看不懂你的意思,交流一下,有错请指教 :)
: 关键字大概是 programatically add controls to ... 之类的术语,
: 要动态产出一个 PictureBox 并不难,其实打开你的 Form1.designer.cs
: 看一下照抄一次就出来了。要挂个 event handler 也是一样的写法。
: 要虚拟产生 click 也很简单,用你的方法 thePic_Click( null, e );
: 还要去定义 e, 不如直接 thePic_Click( null, null); 也是会过的,
: 只要你确定 method那边不会用到 e 的内容即可。
这部分,由於我是会用到e的内容的,目前我用感觉很笨的方法处理,
直接写一个按下的内容丢进去,
MouseEventArgs m = new MouseEventArgs(MouseButtons.Left, 1,
Pic.Location.X, Pic.Location.Y, 0);
key_Click(Pic, m);
也就是在那个物件上面按一下左键的意思而已,
程式码是过了,不过总觉得绕了不少远路@@
: 我的问题是,既然物件是你动态产生的,你应该有它的名字,例如
: PictureBox pictureBoxRuntime; 之类的... 所以写法都一样,
: 还是因为什麽因素,你在 runtime 时创造了不知道名字的 Control?
恩,因为其实是生成了很多个
创造的时候用了个简单的for回圈
Name的属性是Pic+数字这样
而且创造的内容是写在Form_Load里头,
操作的程式码在别的按钮或函式里面,
根本也呼叫不到@@(这部分是不是我有什麽弄错了?),
说实在每次要去抓动态产生的物件都要Find一下我也很不喜欢呢( ̄ー ̄;)
var ← 这个类别好像也不能放在外面当全域变数使用,
(不然我很想这麽做,不然我次在不同的函式内要用都得Find一次)
我是很新的新手-.-...系上虽然有开课但都讲得太浅,
大部分都是自己找资料摸索来的,感觉都是笨问题鬼打墙= =
感谢指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.162.160.79
1F:→ andymai:要弄成全域变数~应该只要在类别那层宣告成private Picture 09/16 01:21
2F:→ andymai:Box p = null; 这样就好了~但是这样还是没办法动态啊~就算 09/16 01:22
3F:→ andymai:产生出来弄在Hashtable里面~还是一样要弄个key来找~如果说 09/16 01:23
4F:→ andymai:find完之後在下个函式要用~一个就是弄成全域~另一个就是直 09/16 01:23
5F:→ andymai:接传过去... 09/16 01:24
所以弄成全域是做得到罗?
我的想法里面是希望可以直接在外层或是某个public class里面var好
把该抓的动态元件都抓一抓,之後要使用就可以直接呼叫
不过似乎做不出来@@
※ 编辑: stu87616 来自: 1.169.46.224 (09/16 01:32)
6F:→ andymai:先var好???这样就变成动态程式码了吧?动态产生程式码是办 09/16 01:39
7F:→ andymai:得到~但是新手...还是先不要搞这麽复杂吧... 09/16 01:40
哈哈 我刚刚在等你下一句推文还以为是办不到
谢谢回答啦 我的问题也算是解决了
只是龟毛的想让程式不要那麽复杂而已~
※ 编辑: stu87616 来自: 1.169.46.224 (09/16 01:41)
8F:→ andymai:某种程度上是好事~是进步的动力~不要过於钻牛角尖就好XD 09/16 01:48