1

我怎样才能做一个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:

解决了。我只是使用容器控件而不是面板。它给了我我需要的东西。(其实我之前不知道这个控件)

4

2 回答 2

0

您将需要为保存到验证分配事件处理程序。此时您正在查看委托和事件处理程序。C# In Depth 很好地深入了解了这一点。但是要开始在网上查找代表和事件处理程序。至于您在到达验证功能点时所做的事情,您必须确定“验证”在您的情况下的含义。

于 2013-11-04T22:01:49.663 回答
0
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;
        }

        public void Save()
        {
            if (Validate() && ValidateChildren())
            {
                //Do something
            }
        }

        private void Save_Click(object sender, System.EventArgs e)
        {
            Save();
        }
        //something else
    }
}

在这里,您可以看到如何将事件附加到WinForms. 在这里,您可以看到一个示例点击事件。

于 2013-11-05T01:50:12.857 回答