これはWinformsでよくサポートされています。 Validatingイベントを使用してエントリを確認し、エラーを報告するErrorProviderコンポーネントを使用します。サンプルイベントハンドラ:
private void textBox1_Validating(object sender, CancelEventArgs e) {
int hour;
e.Cancel = true;
if (textBox1.Text.Length == 0) errorProvider1.SetError(textBox1, "Can't be empty");
else if (!int.TryParse(textBox1.Text, out hour)) errorProvider1.SetError(textBox1, "Not a number");
else if (hour < 1) errorProvider1.SetError(textBox1, "Hour too small");
else if (hour > 24) errorProvider1.SetError(textBox1, "Hour too large");
else {
e.Cancel = false;
errorProvider1.SetError(textBox1, "");
}
}
次に、すべてのエントリが満足できるものかどうかを確認するだけです。ダイアログのOKボタンイベントハンドラでValidateChildren()メソッドを使用します。
private void OKButton_Click(object sender, EventArgs e) {
if (ValidateChildren()) this.DialogResult = DialogResult.OK;
}
ありがとうございました! ValidateData内でコードの修正版を使用しました。作品は魅力! –