完成属性编辑时 没有触发Set

takpod 2016-08-10 04:07:34
  [Editor("Design.ListControlStringCollectionEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public List<string> Item //{ get; set; }
{
get
{return _Item; }
set
{_Item = value; }//当编辑属性完成按确定键时没有触发该函数,我该去哪里取我在属性栏里编辑好的值呢?
...全文
436 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34361392 2016-08-11
  • 打赏
  • 举报
回复
[BrowsableAttribute(true)]
        [DescriptionAttribute("图片集合")]
        //下面这句声明你的自定义集合属性编辑器
        [EditorAttribute(typeof(ImageEditor), typeof(UITypeEditor))]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public Dictionary<string, Image> Images
        {
            get { return Images1; }
            set { Images1 = value; }
        }
然后在自定义你的编辑器
internal class ImageEditor : UITypeEditor
        {
            public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
            {
                return UITypeEditorEditStyle.Modal;
            }

            public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
            {
                IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
                if (edSvc != null)
                {
                    //这里的GetImageList是你自定义的Form窗口
                    GetImageList rc = new GetImageList();
                    ImageList control = (ImageList)context.Instance;
                    rc.Images1 = control.Images1;
                    rc.ShowDialog();
                    value = rc.Images1;
                }
                return value;
            }
        }   
大概就这样 你可以写个例子看看
takpod 2016-08-10
  • 打赏
  • 举报
回复
引用 4 楼 qq_34361392 的回复:
不触发是正常的,VS自带的集合编辑器是不触发set的,他可能用的是Add方法吧数据添加到你的list中的,所以目前你的list可以得到数据但是不会触发set。你要是硬想触发的话,你可以自定义一个集合编辑器,这样就可以触发set
集合编辑器该怎么写呢?
takpod 2016-08-10
  • 打赏
  • 举报
回复
引用 2 楼 yuankaiwsl 的回复:
加这个特性试试
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
不行呢
qq_34361392 2016-08-10
  • 打赏
  • 举报
回复
不触发是正常的,VS自带的集合编辑器是不触发set的,他可能用的是Add方法吧数据添加到你的list中的,所以目前你的list可以得到数据但是不会触发set。你要是硬想触发的话,你可以自定义一个集合编辑器,这样就可以触发set
takpod 2016-08-10
  • 打赏
  • 举报
回复
引用 1 楼 lausfs 的回复:
運行是有啊!你可以試試 set {_Item = value+“屬性” ; } 看看輸出的是什麼!
你说你试了 你的是可以执行吗?
巴士上的邂逅 2016-08-10
  • 打赏
  • 举报
回复
加这个特性试试
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
lausfs 2016-08-10
  • 打赏
  • 举报
回复
運行是有啊!你可以試試 set {_Item = value+“屬性” ; } 看看輸出的是什麼!

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧