昨日、WinForm にあるグループボックス内のコントロールの検証イベントをいくつか実装しました。フォームの AutoValidate プロパティを Disabled に設定し、コントロールの CausesValidation プロパティを true に設定し、コントロールの Validating イベントを実装しました。フォームの ValidateChildren() メソッドを呼び出すことで、検証イベントが強制的に実行されます。これはすべて正常に機能していました。
しかし、このグループボックスをピクチャボックスの上に配置し、ピクチャボックスをグループボックスの親として設定すると、検証イベントは実行されなくなります....
いくつかのデモコードの下。フォームには、ピクチャボックス、グループボックス、テキストボックス、およびボタンのみが含まれています。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_Validating(object sender, CancelEventArgs e)
{
MessageBox.Show("Validating textbox");
e.Cancel = true;
}
private void button1_Click(object sender, EventArgs e)
{
if (ValidateChildren())
MessageBox.Show("Validation not executed :-(");
else
MessageBox.Show("Validation executed :-)");
}
private void Form1_Load(object sender, EventArgs e)
{
groupBox1.Parent = pictureBox1;
}
}