2010-11-23 119 views
2

我有一個文本框,一個標準按鈕和一個包含幾個按鈕的工具欄。 在我編碼的文本框的驗證事件中檢查它是否爲空。 如果是,則顯示一條消息「輸入值」。當標準按鈕被點擊時, 文本框爲空,它正確驗證並顯示消息,但是當單擊工具欄按鈕時,它不驗證文本框,也不顯示任何消息。看起來我必須在 toolstripbutton_click事件中明確寫出驗證碼,當單個窗體上有多個文本框和工具欄按鈕時,這太麻煩了。Toolstripbutton不驗證文本框

我想知道的是textbox_validating可以在點擊tooltripbutton時被觸發嗎?處理toolstrips真的很頭疼。

回答

3

寫下面的toolstripbutton單擊事件:

Me.Validate() 
0

您可以從處理toolstripbutton click事件的過程中調用textbox_validating過程,但您可能必須添加一些邏輯來查看它是否通過了驗證,然後繼續進行其餘的toolstripbutton_click事件。既然你說你有很多文本框要驗證,你可能要考慮做一個返回true或false的Validate()函數,並檢查所有的文本框。然後,您只需檢查Validate()= true並從所有工具欄按鈕中調用相同的函數,而不是一遍又一遍複製相同的代碼。

1

ToolStripItem類是特殊的,它們不是派生自Control。其中一個副作用就是他們不會將焦點從主動控制中移除。這可以防止驗證事件觸發。

你可以做幾件事。你可以調用文本框父母的ValidateChildren()方法。或者你也可以自己移動焦點:

private void toolStripButton1_Click(object sender, EventArgs e) { 
     btnSave.Focus(); 
     if (btnSave.Focused) btnSave.PerformClick(); 
    }