本帖最后由 cnfczn 于 2012-06-21 14:16:46 编辑

解决方案 »

  1.   

    object obj = context.GetType().GetProperty("PropertyValue").GetValue(context, null);
      

  2.   

    在context对象上加断看过了,只包含PropertyGrid被绑定的对象属性(context.Instance),而当前用户输入的新值context没有保存,这个CanConvertFrom()方法只是根据类型判定是否可以转换.跟具体的值无关系.即便脱离现在的结构也可以,因为我感觉我现在实现方法思路不对.
      

  3.   


        public class Tx
        {
            int val = 0;
            public int Value
            {
                get
                {
                    return val;
                }
                set
                {
                    if (value >= 0 && value <= 100)
                    {
                        val = value;
                    }
                    else
                    {
                        throw new Exception("数值有效范围为[0,100]");
                    }
                }
            }
        }
    将你的PropertyGrid指定到一个上面的实例,设置Value值,超过范围就提示错误,不知道是不是你要的效果
      

  4.   

    反编译看NumricUpDown.Value的实现的时候,也是这么写的,但是测试结果是中断程序抛出异常,而不是弹出提示窗口.你可以找个NumricUpDown控件.修改他的Value值.看看他的提示效果
      

  5.   

    妥了,不使用IDE调试,直接运行就能弹出提示窗口了.谢谢楼上的同志.
      

  6.   

    程序不会错误的啊。
    应该是Property控件把错误给捕获掉了,就是弹出一个选择框,是继续弹错,否撤销操作。我测试过了,和VS中设置NumberUpDown控件效果是一样的