小弟重写了DataGridViewColumn,然后在重写的自定义列中添加了几个属性,比如:
        private bool _IsComBoBox;
        /// <summary>
        /// 是否是ComBoBox控件
        /// </summary>
        [DefaultValue(true)]
        public bool IsComBoBox
        {
            get { return _IsComBoBox; }
            set 
            { 
                _IsComBoBox = value;
            }
        }
列定义好了后,在界面上给DataGridView增加列后选择自定义的列,在属性设置的杂项那里也可以看到IsComBoBox,但是默认值竟然是False,也就是说[DefaultValue(true)]属性没有起作用,然后我到Form的designer中,发现设计器中IsComBoBox的值也是False,于是DataGridView的编辑列中把IsComBoBox改为true,保存后,去查看,发现还是False,于是我在去修改为False,保存后立刻在在“编辑列”那里看,发现又是False,竟然没有保存住!!我尝试关闭form再打开、重新生成方案等等,都不能解决!!如果不再界面设置,而是程序去处理,就没有问题,但是做东西就要做到完美,如何能够在界面上设计并且能保存住呢??希望做过这方面的高手给小弟一点提示!!

解决方案 »

  1.   

    试试加上DesignerSerializationVisibility特性。
    按道理没有写DesignerSerializationVisibility是会保存的,有点奇怪。
      

  2.   

    DesignerSerializationVisibility.Content/Hidden/Visible都不行,郁闷死了!!
      

  3.   

    这个可能是微软的bug,快捷方式控件也一样不能在属性窗里设置enable属性,否则就改不过来了。
      

  4.   

    从Microsoft上下了MaskTextBox的官方例子,发现他们的自定义属性也不行,也是保存不住!!唉!!