关于c#的Visible属性无法触发Click事件

我想程序运行的时候,点哪个picturebox,哪个的图就显示出来,但是如果一开始设置picutebox.visible=false的话,根本就触发不了clikc事件,这... 我想程序运行的时候,点哪个picturebox,哪个的图就显示出来,但是如果一开始设置picutebox.visible=false的话,根本就触发不了clikc事件,这个怎么解决??
是这样的,我有很多picturebox放在一个TableLayoutpanel里面,现在想点击它们的代码都写在一个Picture_Click事件里,可以用picturebox p=sender as picturebox来确定点击的是哪个picturebox。假设点了第i个picturebox 就 p.image = MyImage[i](这是存放着资源图片的一个List)。 现在问题是 这个 i 咋得到呢?
展开
 我来答
欧阳Biangbiang
2014-03-02 · 超过23用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:62.5万
展开全部
不是触发不了,是无法触发,visible等于true时空间则被隐藏了,无法点击到它,你可以这样,把一个大panel假想分为10个大小均等的小块,然后在点击这个大panel时获取鼠标点击的坐标,然后判断点击的点属于哪个小块的范围,然后再把pictruebox显示在此(设置一下location就好了)
追问
点不了的原因我知道的。恩,你说这个方法我试了下。现在问题在于怎么获取坐标后,怎么访问对应的picturebox。我现在有4*4个picturebox,是picturebox1,....16,现在如果鼠标点击了picturebox3的位置,我就得到r=0,c=2,但是picturebox不是一个数组,不然的话我可以picturebox[r*4+c + 1].show();
追答
这个简单啊,你可以通过字典集合Dictionary来做,key用来保存你的点击坐标换算成的一个值,value用来保存这个坐标对应的pictruebox,然后就可以 dic[坐标换算的值].Show()了
纯手打,希望能帮到你!

按照你追问的,你可以把每个Pictruebox的Tag用来保存它对应的要显示的图片,然后则可以string imgName=(sender as picturebox).Tag 得到图片的名字,如果你的图片是保存在集合里边,你就可以使用IndexOf来获取该图片名字保存在集合中的索引,最后你就可以这样了 :p.image = MyImage[i]
天涯路易2011
2014-03-02 · TA获得超过263个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:246万
展开全部
这个简单啊,你的picture命名按照picturebox1、picturebox2、picturebox3.....pictureboxN
然后picturebox p=sender as picturebox;
int i=int.Parse(p.Name.SubString(10,1));
这不就取到了,还有很多类似的方法
追问
C# 我初学,很多不知道呢,不过我就知道肯定有办法的! 感谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xmandlp
2014-03-02 · TA获得超过484个赞
知道小有建树答主
回答量:498
采纳率:0%
帮助的人:305万
展开全部
要不你把picutebox的背景色设置成它后面的背景一样的颜色 这样估计看起来就像隐藏的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式