以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  e.Form.Controls("RadioButton4").Select() 执行与预期不一样?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77133)

--  作者:包头123
--  发布时间:2015/11/11 16:35:00
--  e.Form.Controls("RadioButton4").Select() 执行与预期不一样?
版主:
    我建立了6个RadioButton控件,如下:
    Panel1上:RadioButton1,RadioButton2,RadioButton3
    Panel2上:RadioButton4,RadioButton5,RadioButton6

    我的想法是:点击Panel1上的RadioButton1,或者RadioButton2,或者RadioButton3时,都模拟点击(或者默认触发)RadioButton5控件。
    因此,在RadioButton1,RadioButton2,RadioButton3的Click事件中,写了如下语句:
    e.Form.Controls("RadioButton5").Select() 

    运行结果发现:RadioButton5的内容执行了3次,即在屏幕上闪动了3次。

    但是我去掉RadioButton1,RadioButton2,RadioButton3的Click事件中的代码,手工点击RadioButton5控件时,只执行1次。

    为什么自动执行e.Form.Controls("RadioButton5").Select()与人工点击RadioButton5控件的效果有差异呢?

--  作者:大红袍
--  发布时间:2015/11/11 17:01:00
--  

select() 触发的是Enter事件,不会触发click事件。

 

具体例子发上来。


--  作者:包头123
--  发布时间:2015/11/11 17:46:00
--  
那我先试试看。
--  作者:包头123
--  发布时间:2015/11/12 16:22:00
--  
版主:
    我做了一个例子,如下:
    点击RadioButton1自动选择RadioButton2,RadioButton2自动选择RadioButton3,在RadioButton3中,显示一行信息,总计显示了4次。
    帮我看看,到底哪里有问题了?
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.rar


--  作者:包头123
--  发布时间:2015/11/12 16:22:00
--  
也就是说,实际执行结果,本来预想的显示1次,结果显示了4次,与预期不一样。
--  作者:大红袍
--  发布时间:2015/11/12 16:47:00
--  

click是中切换焦点肯定有这样的问题。

 

1、2、3;2、3;2、3;2、3;1 这样执行的。

 

用selece触发click肯定是不对的,要不你就用 CheckedChanged 代替


--  作者:包头123
--  发布时间:2015/11/13 8:54:00
--  
版主:
    你说的1、2、3;2、3;2、3;2、3;1 这样执行的。我有点不明白,能否再说明白一些。
     用select触发click不对,但我放在click事件中,确实执行了,应该不执行才对。


--  作者:大红袍
--  发布时间:2015/11/13 9:08:00
--  
不要再click事件切换焦点啊。会造成循环触发事件的。
--  作者:包头123
--  发布时间:2015/11/13 9:16:00
--  
版主:
     你说的不错,按照你的思路,确实解决了。
     但刚才我提到的问题,我感觉也确实是问题。
     谢谢了。

--  作者:大红袍
--  发布时间:2015/11/13 9:26:00
--  

1、2、3表示控件,click事件过程中焦点离开,会先执行其余事件,最后再回到自己那里。

 

1、2、3;2、3;2、3;2、3;1