繁体   English   中英

验证绑定到对象的C#Winform控件

[英]Validation of c# winform controls that are bounded to an object

我使用工具箱在应用程序中创建了winform控件。 我还在设置页面中设置了这些控件的默认值,最小值和最大值。 然后,我将这些控件限制在一个对象中。 看起来像这样:

 private void InitializeBinding()
    {
        enable_checkbox.DataBindings.Add("Checked", ObjectConfig, "enable");
        area_numeric.DataBindings.Add("Value", ObjectConfig, "area");

    }

和我的ObjectConfig类具有以下内容:

class ObjectConfig {
   private bool bEnable;
   private int iArea;

   public bool enable
   {
     get { return bEnable; }
     set { bEnable = value; }
   }

   public int area
   {
     get { return iArea; }
     set { iArea = value; }
   }
}

绑定效果很好。 没问题。 然后,我将此对象转换为xml并将其保存到config xml文件中。问题是,如果有人将xml文件中的area值编辑为超出设置的min和max值以及xml的数字加载并转换为对象后,由于该对象已绑定到具有最小值和最大值的控件,因此会出现错误。 有没有一种好的方法可以提供这种类型的验证?

您可以在属性的设置器中对其进行约束,然后检查该属性是否在限制范围内。 您可以将极限值输入到项目属性变量中,如下所示(对不起,德语版Dictionary ):

在此处输入图片说明

在设置器中,您可以检查这些范围并访问变量,如下所示:

public class ObjectConfig
{
    private bool bEnable;
    private int iArea;

    public bool enable
    {
        get { return bEnable; }
        set { bEnable = value; }
    }

    public int area
    {
        get { return iArea; }
        set
        {
            if (value < Properties.Settings.Default.AreaMin)
            {
                iArea = Properties.Settings.Default.AreaMin;
            }
            else if (value > Properties.Settings.Default.AreaMax)
            {
                iArea = Properties.Settings.Default.AreaMax;
            }
            else
            {
                iArea = value;
            }
        }
    }
}

这样,无论用户在* .XML文件中进行什么编辑,您的值都将始终在设置的范围内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM