どうすればPanel.Validate()
とを作ることができPanel.ValidateChildren()
ますか?
パネルにツールストリップがあるため、これが必要です。2 つのボタン (保存とキャンセル) があります。
保存は and を呼び出す必要がPanel.Validate()
ありPanel.ValidateChilden()
ます。
Cancel は何も呼び出さないでください。
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class MyPanel : Panel
{
public bool Validate()
{
//What to write in here ?
return true;
}
public bool ValidateChildren()
{
foreach (Control c in this.Controls)
{
//What to write in here ?
}
return true;
}
}
}
編集: もう少し説明が必要です。ユーザーがテキストボックスを離れると、パネルのテキストボックスが検証されます。しかし、保存ボタンをクリックすると、ユーザーはアクティブなテキストボックスを離れません。したがって、検証されず、破損したデータを保存できます。保存を押した後、テキストボックスに入力を続けたいと思うかもしれないので、(フォーカスを別のコントロールに設定することによって)強制的に彼を離れさせたくありません。
保存ボタンをクリックしたときに Form.ValidateChildren() を呼び出して、現在処理しています。機能しますが、フォーム上のすべてのコントロールを検証します。私のパネルにあるものだけではありません。
private void button1_Click(object sender, EventArgs e)
{
if (ParentForm.ValidateChildren())
this.Save();
else
MessageBox.Show("Error in validating");
}
EDIT2:
解決しました。Panel の代わりに containercontrol を使用するだけです。それは私が必要なものを与えてくれます。(実は私は今までこのコントロールを知りませんでした)