我怎样才能做一个Panel.Validate()
和Panel.ValidateChildren()
?
我需要这个,因为我的面板上有一个工具条。I 包含 2 个按钮(保存和取消)。
Save 应该调用Panel.Validate()
and 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");
}
编辑2:
解决了。我只是使用容器控件而不是面板。它给了我我需要的东西。(其实我之前不知道这个控件)