我的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; }
}
希望你能理解我的问题。
答案 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);
}