0

我有一个带有初始文本的textbox名称。 我也有一些。 TxtHelp
RadioButtons

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

我知道如何做到这一点,使用2每个工具的事件,所以如果我有 4 个 RadioButtons,它将是8事件。这是很多代码。就像each我拥有的​​单选按钮的代码一样:

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编码?

4

1 回答 1

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并在其中识别它们。

于 2013-06-14T13:37:19.933 回答