2011-10-24 84 views
0

我的CustomControl是使用TextBox和ComboBox創建的。我想爲此控件使用驗證事件。但是,如果我使用innerTextBox.Validating這意味着這將適用於TetBox的工作。但我不希望這個事件會觸發,當我點擊ComboBox這也是這個UserControl的一部分。我希望這個UC將是一個整體。這樣我就可以點擊文本框和組合框,並沒有事件將觸發becouse他們是一個一起...CustomControl textBox驗證事件和組合框

innerTextBox是文本框

innereComboBox是組合框

這是爲了驗證我的代碼代碼事件。當我點擊ComboBox時,該事件該怎麼辦?

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

      remove { innerTextBox.Validating -= value; } 
     } 

希望你能理解我的問題。

回答

1

我想你必須自己做這個。關閉CausesValidation屬性的內部控制,使他們不火,然後運行在用戶控件的代碼驗證:

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

例如,這種控制需要從一個非空文本框和一個選定的項目組合框:

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); 
} 
1

您是否嘗試添加組合框來驗證事件?

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

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

我現在嘗試,但是當我在組合框中 – senzacionale

+0

@senzacionale點擊驗證事件仍然火了:我不明白好你的意思_」怎麼辦該事件當我點擊,將不會觸發什麼組合框?」_。你能解釋得更好嗎? – Marco

+0

TextBox和Combobox是CustomControl的一部分。我想爲此控件使用驗證事件。但是,如果我使用innerTextBox.Validating這意味着這將適用於TetBox的工作。但我不希望這個事件會觸發,當我點擊ComboBox這也是這個UserControl的一部分。我希望這個UC將是一個整體。所以我可以點擊文本框和組合框,沒有任何事件會觸發,因爲它們是一個整體......現在希望更好 – senzacionale