CustomControl textBox验证事件和ComboBox

时间:2011-10-24 10:57:31

标签: c#

我的CustomControl是使用TextBox和ComboBox创建的。我想对此控件使用Validating事件。但是,如果我使用innerTextBox.Validating这意味着将适用于TetBox,这是好的。但是当我点击ComboBox时,我不希望这个事件会被触发,ComboBox也是这个UserControl的一部分。我希望这个UC将成为一体。所以我可以点击TextBox和Combobox,因为他们在一起就不会发生任何事件......

innerTextBox是TextBox

innereComboBox是ComboBox

这是我验证的代码事件。当我点击ComboBox时,该事件该怎么办?

public new event System.ComponentModel.CancelEventHandler Validating
        {
            add
            {
                innerTextBox.Validating += value;
            }

            remove { innerTextBox.Validating -= value; }
        }

希望你能理解我的问题。

2 个答案:

答案 0 :(得分:1)

您是否尝试过将combobox添加到验证事件中?

public new event System.ComponentModel.CancelEventHandler Validating
{
    add
    {
        innerTextBox.Validating += value;
        innerComboBox.Validating += value;
    }

    remove 
    { 
        innerTextBox.Validating -= value; }
        innerComboBox.Validating -= value; }
    }
}

答案 1 :(得分:1)

我认为你必须自己做。关闭内部控件的CausesValidation属性,以便它们不会触发,然后运行UserControl的验证代码:

public UserControl1() {
  InitializeComponent();
  innerTextBox.CausesValidation = false;
  innerComboBox.CausesValidation = false;
}

例如,此控件需要非空TextBox和ComboBox中的选定项:

protected override void OnValidating(CancelEventArgs e) {
  if (innerTextBox.Text == string.Empty)
    e.Cancel = true;
  else if (innerComboBox.SelectedIndex == -1)
    e.Cancel = true;

  base.OnValidating(e);
}