2010-11-23 5 views
2

私は、テキストボックス、標準ボタン、および2つのボタンを含むツールストリップを持っています。 テキストボックスの検証イベントで、空白かどうかを確認するためにコード化しました。 「はい」の場合、「値の入力」というメッセージが表示されます。 テキストボックスが空のときに標準ボタンをクリックすると、正しく検証されメッセージが表示されますが、 ツールストリップボタンをクリックすると、テキストボックスの検証は行われず、メッセージも表示されません。 toolstripbutton_clickイベントで検証コードを明示的に記述しなければならないようです。これは、単一のフォーム上に複数のテキストボックスとツールストリップボタンがある場合、面倒です。ツールボックスがテキストボックスを検証していない

私が知りたいのは、ツールストリップボタンをクリックしたときにtextbox_validatingが発動できるかどうかです。ツールストリップの取り扱いは本当に頭痛です。

答えて

3

toolstripbuttonのクリックイベントに次のように書く::

Me.Validate() 
それとも、自分でフォーカスを移動することができます
0

toolstripbutton clickイベントを処理するプロシージャからtextbox_validatingプロシージャを呼び出すことができますが、残りのtoolstripbutton_clickイベントを続行する前に、検証に合格したかどうかを確認するロジックを追加する必要があります。検証するテキストボックスがたくさんあると言ったので、trueまたはfalseを返すValidate()関数を作成し、すべてのテキストボックスをチェックすることを検討するとよいでしょう。次に、Validate()= trueであるかどうかをチェックし、同じコードを何度も繰り返しコピーするのではなく、すべてのツールストリップボタンから同じ関数を呼び出します。

1

ToolStripItemクラスは特別なもので、Controlから派生しません。その副作用の1つは、アクティブなコントロールからフォーカスを外さないということです。これにより、Validatingイベントが発生しなくなります。

あなたができることはいくつかあります。テキストボックスの親のValidateChildren()メソッドを呼び出すことができます。

private void toolStripButton1_Click(object sender, EventArgs e) { 
     btnSave.Focus(); 
     if (btnSave.Focused) btnSave.PerformClick(); 
    } 
関連する問題