使用鼠标悬停/离开事件

时间:2013-06-14 13:15:27

标签: c# mouseevent

我有textbox名为TxtHelp的初始文字 我也有一些RadioButtons

当我触发事件Mouse_Hover时,我想将TxtHelp.Text更改为自定义文字 当我触发事件Mouse_Leave时,我想返回TxtHelp的原始文本。

我知道如何为每个工具使用2事件,所以如果我有4个RadioButtons,它将是8个事件。这是很多代码。就像我有each radiobutton的代码一样:

private void rb_Serial_MouseHover(object sender, EventArgs e)
  {
    txt_Ajuda.Text = "CustomText different for each RadioButton";
  }
private void rb_Serial_MouseLeave(object sender, EventArgs e)
  {
    txt_Ajuda.Text = "Return to the initial value of textbox";
  }  

有没有办法让它更加practical?某种方式需要我less代码?

1 个答案:

答案 0 :(得分:2)

概括事件处理程序。您需要识别单选按钮,因此要么使用控件的名称,要么为每个单选按钮的Tag属性(在我的示例中为简单的Int32值)分配标识数据:

private void rb_MouseHover(Object sender, EventArgs e)
{
    switch (Convert.ToInt32(((RadioButton)sender).Tag))
    {
    case 0:
        text1.Text = "Text for radio button 0";
        break;
    case 1:
        text1.Text = "Text for radio button 1";
        break;
    case 2:
        text1.Text = "Text for radio button 2";
        break;
    case 3:
        text1.Text = "Text for radio button 3";
        break;
    //etc...
    }
}

private void rb_MouseLeave(Object sender, EventArgs e)
{
    switch (Convert.ToInt32(((RadioButton)sender).Tag))
    {
    case 0:
        text1.Text = "Original for radio button 0";
        break;
    case 1:
        text1.Text = "Original for radio button 1";
        break;
    case 2:
        text1.Text = "Original for radio button 2";
        break;
    case 3:
        text1.Text = "Original for radio button 3";
        break;
    //etc...
    }
}

有了这个,你只需为每个RadioButton分配相同的两个事件处理程序,并在其中识别它们。