我的问题是:为什么rabut1(单选按钮)得到焦点会产生rabut1.Click事件执行rabut_Click方法,但button1得到焦点却不产生button1.Click事件,不执行button1_Click()方法呢,代码如下。
using System;
using System.Windows.Forms;
using System.Drawing;class Form1:Form
{
 private RadioButton rabut1;
 private RadioButton rabut2;
 Button button1;
 
 public Form1()
 {
  FormSet();
 }
 
 public void FormSet()
 {
  button1=new Button();
  rabut1=new RadioButton();
  rabut2=new RadioButton();
  
 //设置button1
 button1.Text="OK";
 
 //设置rabut1
 rabut1.Location=new Point(10,20);
 rabut1.Size=new Size(50,11);
 rabut1.Text="123";
 //rabut1.Checked=true;
 rabut1.TabStop=false;
  
 //设置rabut2
 rabut2.Location=new Point(10,40);
 rabut2.Size=new Size(50,11);
 //rabut2.Checked=true;
 rabut2.Text="abc";
  
 //添加控件
 Controls.Add(rabut1);
 Controls.Add(rabut2);
 Controls.Add(button1);
 
 //添加button1事件
 button1.Click+=new EventHandler(this.button1_Click);
 button1.Focus();
 
 //RadioButton单击事件
 rabut1.Click+=new EventHandler(this.rabut_Click);
 rabut2.Click+=new EventHandler(this.rabut_Click);
  MessageBox.Show("小日本去死");
  if (rabut1.Checked==false)
     MessageBox.Show("rabut1 没被选中");
 }
 
 private void button1_Click(object sender,EventArgs e)
 {
  this.rabut1.Focus();// rabut1(值为123的单选按钮)得到焦点就会触发Click事件
  rabut1.Checked=false;
 }
 
 private void rabut_Click(object sender,EventArgs e)
 {
  if (sender==rabut1)
     MessageBox.Show(rabut1.Text);
  else if (sender==rabut2)
     MessageBox.Show(rabut2.Text);
 } public static void Main()
 {
  Application.Run(new Form1());
 }
}

解决方案 »

  1.   

    就是控件Button和button1_Click()没有对应上。
    双击Button会自动产生事件,或者在控件的属性中的事件(有闪电的符号)将点击事件和后台事件对应。
      

  2.   

    感谢楼主的兄弟的回复,我的意思是说,为什么我执行rabut1.Focus()会触发rabut1.Click事件呢
    而button1.Click却不会触发button1.Click事件
      

  3.   

    应该是radio得到交点的时候同时触发了click事件吧
      

  4.   

    对对,就是这个原因,为什么raido得到焦点会触发Click事件呢
      

  5.   

    试问如果raido得到焦点不触发Click事件,那什么时候触发吗?在它被选中时吗?
      

  6.   

    看看rabut1,button1连个控件的事件到底是什么??
    如果你没有定义的话,是不可能触发的。
      

  7.   

    bumm(......)  
     
       试问如果raido得到焦点不触发Click事件,那什么时候触发吗?在它被选中时吗?我是用rabut1.Focsu();得到焦点的,不是靠鼠标点击的得到的,那为什么TextBox.Focus();和Button.Focus();不能触发相应事件呢,只有RadioButton能,麻繁你给解释一下吧
     
      

  8.   

    c#中CHECKED 属性为TRUE时,自动触发CLICK事件.
    当焦点转移到RADIO上时,首先触发CHECKEDCHANGE事件检查是否选中,如果选中则触发其CLICK事件,然后触发ENTER事件,这是RADIO和CHECKBOX特有的事件.