[注意]走过路过不要错过啊,焦点与事件问题,请朋友们进来看看,帮忙解决

badboy168 2005-05-16 03:16:43
我的问题是:为什么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());
}
}
...全文
130 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
stty 2005-05-16
  • 打赏
  • 举报
回复
c#中CHECKED 属性为TRUE时,自动触发CLICK事件.
当焦点转移到RADIO上时,首先触发CHECKEDCHANGE事件检查是否选中,如果选中则触发其CLICK事件,然后触发ENTER事件,这是RADIO和CHECKBOX特有的事件.
badboy168 2005-05-16
  • 打赏
  • 举报
回复
bumm(......)

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

我是用rabut1.Focsu();得到焦点的,不是靠鼠标点击的得到的,

那为什么TextBox.Focus();和Button.Focus();不能触发相应事件呢,只有RadioButton能,麻繁你给解释一下吧

新鲜鱼排 2005-05-16
  • 打赏
  • 举报
回复
看看rabut1,button1连个控件的事件到底是什么??
如果你没有定义的话,是不可能触发的。
wingnal 2005-05-16
  • 打赏
  • 举报
回复
up
bumm 2005-05-16
  • 打赏
  • 举报
回复
试问如果raido得到焦点不触发Click事件,那什么时候触发吗?在它被选中时吗?

badboy168 2005-05-16
  • 打赏
  • 举报
回复
对对,就是这个原因,为什么raido得到焦点会触发Click事件呢
onekissme 2005-05-16
  • 打赏
  • 举报
回复
应该是radio得到交点的时候同时触发了click事件吧
badboy168 2005-05-16
  • 打赏
  • 举报
回复
我再UP一下
fycooer 2005-05-16
  • 打赏
  • 举报
回复
up
badboy168 2005-05-16
  • 打赏
  • 举报
回复
感谢楼主的兄弟的回复,我的意思是说,为什么我执行rabut1.Focus()会触发rabut1.Click事件呢
而button1.Click却不会触发button1.Click事件
新鲜鱼排 2005-05-16
  • 打赏
  • 举报
回复
就是控件Button和button1_Click()没有对应上。
双击Button会自动产生事件,或者在控件的属性中的事件(有闪电的符号)将点击事件和后台事件对应。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧