自動DialogResultを使用するときに.NETダイアログ項目を検証する方法は?
質問
現時点では、c#でドロップダウンを使用してカスタムokキャンセルダイアログを設定しています。 [OK]ボタンと[キャンセル]ボタンはDialogResultプロパティを使用するため、背後にコードはありません。ダイアログ結果をポストバックする前に、ドロップダウンを検証して空になっていないことを確認する必要があります。
これは可能ですか?
解決
から
Closingフィールドをダブルクリックし、次のように実装します。
private void Second_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
// When the user attempts to close the form, don't close it...
e.Cancel = (dropdown.selecteditemindex >= 0);
}
他のヒント
コンボボックスが有効な値に変更されるまで、[OK]ボタンを無効にします。
何かを確認する場合は、デザイナーの背後にあるコードが常に必要です。 あなたの場合、「閉じる」を使用できます。フォームのイベント、必要なものを確認し、必要に応じて" e.Cancel = true;"を設定します-その後、フォームは閉じられません。
このために行ったことは、OKボタンにDialogResultを設定せず、ボタンの後ろにコードを配置することです。
private void OkButton_Clicked(object sender, EventArgs e)
{
this.DialogResult = ValueComboBox.SelectedIndex >= 0
? DialogResult.Ok
: DialogResult.None;
}
ダイアログの[OK]および[キャンセル]ボタン機能を引き続き使用し、[OK]ボタンのClickedハンドラーにこのコードを配置できます。
private void OkButton_Clicked(object sender, EventArgs e)
{
if (!IsValid()) {
this.DialogResult = System.Windows.Forms.DialogResult.None;
}
}
上記のコードでは、 IsValid()
は実装する必要があるメソッドであり、ダイアログの入力フィールドを検証します。
所属していません StackOverflow