public enum DragFlag
{
Move=0,
Copy=1
};
//定义属性:
[DefaultValue(1),Description("鼠标拖动选项"),Category("Behavior")]
//改成[DefaultValue("Copy"),Description("鼠标拖动选项"),Category("Behavior")]也不行
public DragFlag MouseDragFlag
{
get{return mouseDragFlag;}
set{mouseDragFlag=value;}
}
[Description("Xml文件全路径"),Category("Behavior")]
public string XmlPath
{
get{return xmlPath;}
set{xmlPath=value;}
去我将自己的控件放在窗体上,在属性窗口中MouseDragFlag不是Copy,而是Move
XmlPath为空,问题不难,请指教!

解决方案 »

  1.   

    get{return mouseDragFlag;}改成get{return (mouseDragFlag==null)?DragFlag.Copy:mouseDragFlag;}
    试试看
      

  2.   

    如果是旧的控件,你需要点那个属性 reset 一下才可以看到效果下面是我测试的代码public enum DragFlagTest
    {
    Move = 0,
    Copy = 1
    }private DragFlagTest m_dragFlag;[DefaultValue(DragFlagTest.Copy)]
    public DragFlagTest MouseDragFlag
    {
    get { return m_dragFlag; }
    set { m_dragFlag = value; }
    }
      

  3.   

    to tiaoci(我挑刺,我快乐):
    我用的是VS。NET2003
    以前曾经是对的,可现在重新用就出错了,按重置后出现“对象类型无法转换成目标类型"的提示
    郁闷
      

  4.   

    特意试了一下, VS2003 里面好像必须这么写[DefaultValue(DragFlagTest.Copy)]不能写成
    [DefaultValue(1)], 这样就会出转换错试试吧
      

  5.   

    而且VS2003如果你写成1,它默认转换好像就是 .Move不过我很奇怪,放着 [DefaultValue(DragFlagTest.Copy)]这种不写,要写成 [DefaultValue(1)],明显自己找麻烦代码要按最标准的写法写啊,呵呵
      

  6.   

    兄弟,我这两种都写过,一样也不行
    甚至写过[DefaultValue(“Copy”)]
    这三种写出法都不行,以前我只一个类,这种写出法是对的,可后来加入了好多类
    都要用到DragFlag,出现以上情况,真的郁闷死了,明明是对的,为什么不行?
      

  7.   

    我这里试下来 [DefaultValue(DragFlagTest.Copy)]是可行的,相信MS  :)你可能是别的问题吧
      

  8.   

    我把DragFlag换成:
    public enum DragFlag
    {
    Copy=0,
    Move=1
    };
    [DefaultValue(DragFlag.Copy)]
    public DragFlag MouseDragFlag
    {
    get{return mouseDragFlag;}
    set{mouseDragFlag=value;}
    }
    怎么在属性窗口中出现的还是老版本的MouseDragFlag,是Move
    我已经把老版本的从工具箱中删除后再加入新版本的啊
      

  9.   

    怎么都是和旧版本的属性值一样啊?
    我在旧版本中加入了属性
    [DefaultValue("新节点"),Description("新增节点的标题"),Category("Behavior")]
    public string AddNodeText
    {
    get{return addNodeText;}
    set{addNodeText=value;}
    }
    改成:
    [DefaultValue("新节点1"),Description("新增节点的标题"),Category("Behavior")]
    public string AddNodeText
    {
    get{return addNodeText;}
    set{addNodeText=value;}
    }
    后,在属性窗口中AddNodeText还是显示“新节点”
    应该是版本问题,怎么改呢?
      

  10.   

    对了,以上问题有了点思路
    可为什么字符类型的属性的默认值在属性窗口中没显示呢?
    比如:
    [DefaultValue("新节点"),Description("新增节点的标题"),Category("Behavior")]
    public string AddNodeText
    {
    get{return addNodeText;}
    set{addNodeText=value;}
    }
    属性窗口中的属性AddNodeText的值为空,不是“新节点”
    怎么做呢?