日期:2014-05-17  浏览次数:20796 次

这个小问题我还是第一次遇到,平时不怎么注意.
//Load事件中.
        private void Form1_Load(object sender, EventArgs e) {
            if(rdbA.Checked)
                rdbA.Checked = false;
        }
 //RadioButton事件中.
        private void rdbA_CheckedChanged(object sender, EventArgs e) {
            if(rdbA.Checked) rdbA.Checked = false;
        }


/*我拖几个RadioButton到界面,发现默认情况下,第一个是被选中的,然后我开始没想到在 Changed事件中写那两行代码.所以开始写在Load中,发现在Load中设置的RadioButton的Checked属性没有起作用.也就是说,如果本来Checked是true,我在 Load事件中已经设置为false了,但是,当Changed事件触发后,进入Changed事件的时候,又是True.
也就是说,我如果想所有的RadioButton都为不选中状态,我要在Changed事件写才行...何解...*/

------解决方案--------------------
RadioButton默认情况不是不选中的么?
  private void Form1_Load(object sender, EventArgs e) {
            if(rdbA.Checked)
                rdbA.Checked = false;
        }
这样没效果?是不是有其他代码影响了?
------解决方案--------------------
引用:
Quote: 引用:

RadioButton默认情况不是不选中的么?
  private void Form1_Load(object sender, EventArgs e) {
            if(rdbA.Checked)
                rdbA.Checked = false;
        }
这样没效果?是不是有其他代码影响了?


我想也是哈,所以上这个代码.应该没有其他的影响吧.
我调试发现,在 Load事件中的时候,Checked为 false,但是,当进入Changed事件的时候,就变成true.
貌似这是 .Net自己设置的,让第一个RadioButton处于Checked状态.所以在Changed事件中设置...我觉得应该是这个原因.


我觉得是控件初始化先后的问题