研究一上午如何对propertyGrid中输入的数值进行验证的问题,解决方法如下:
因为我是定义类的集合赋给propertyGrid当中的,所以验证部分主要在对于类的定义上:
pgcLeaks.SelectedObject = CProperty类的集合
public class CProperty
{private object m_Value = null;
/// <summary>
/// 为double类型时最小值
/// </summary>
public double MinValue
{
get { return m_minValue; }
set { m_minValue = value; }
}
/// <summary>
/// 为double类型时最大值
/// </summary>
private double m_maxValue;
public double MaxValue
{
get { return m_maxValue; }
set { m_maxValue = value; }
}
public CProperty(object value, double minValue, double maxValue)
{
m_Value = value;
m_minValue = minValue;
m_maxValue = maxValue;
}
public CProperty(string name, object value)
{
m_Name = name;
m_Value = value;
}
public virtual object Value
{
get { return m_Value; }
set
{
if (m_Value.GetType() == typeof(double))
{
if ((m_minValue == 0 && m_maxValue == 0) || (double.Parse(value.ToString()) >= m_minValue && double.Parse(value.ToString()) <= m_maxValue))
{
m_Value = value;
}
else
{
throw new Exception("数值有效范围为[" + m_minValue + "," + m_maxValue + "]");
}
}
else
{
m_Value = value;
}
m_Value = value;
}
}
}
运行结果: