代码之家  ›  专栏  ›  技术社区  ›  Miguel Angelo

.NET:是否有内置的typeconverter或uitypeeditor来编辑字符串列表

  •  4
  • Miguel Angelo  · 技术社区  · 15 年前

    我想知道.NET-3.5是否带有内置的 List<string> string[] TypeConverter UITypeEditor 这样我就可以从属性网格中编辑这种属性。

    2 回复  |  直到 6 年前
        1
  •  2
  •   munissor    15 年前

    您可以使用[editor(“system.windows.forms.design.StringArrayeditor,system.design,[此处为程序集版本和公钥标记信息]”,typeof(system.drawing.design.uitypeeditor))]

        2
  •  2
  •   Reza Aghaei    6 年前

    uitypeeditor for list<string>

    对于 string[] 您不需要执行任何特殊操作,属性网格将使用包含多行文本框的标准对话框来编辑字符串数组,并且每行都将是数组中的元素。

    要在属性网格中编辑 list<string> ,可以使用以下任一选项:

    • StringCollectionEditor which shows a dialog containing a multi line text box to edit elements
    • 创建一个自定义的 collection editor to edit items in a collection editor dialog

    选项1-StringCollectionEditor

    private list<string>mylist=new list<string>();
    [编辑器(“System.Windows.Forms.Design.StringCollectionEditor,”)+
    “system.design,version=2.0.0.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a”,
    typeof(uitypeeditor))]
    [设计器序列化可见性(designers序列化可见性.content)]
    公共列表<string>我的列表{
    获取{
    返回MyList.
    }
    集合{
    MyList=值;
    }
    }
    < /代码> 
    
    

    选项2-自定义CollectionEditor

    首先创建自定义编辑器:

    //需要添加对system.design的引用
    公共类myStringCollectionEditor:CollectionEditor{
    public myStringCollectionEditor():base(type:typeof(list<string>)
    受保护的重写对象CreateInstance(type itemtype){
    返回string.empty;
    }
    }
    < /代码> 
    
    

    然后用编辑器属性修饰属性:

    private list<string>mylist=new list<string>();
    [编辑器(typeof(mystringcollectioneditor),typeof(uitypeeditor))]
    [设计器序列化可见性(designers序列化可见性.content)]
    公共列表<string>我的列表{
    获取{
    返回我的列表;
    }
    设置{
    MyList=值;
    }
    }
    < /代码> 
    
    

    e包含多行文本框的标准对话框,用于编辑字符串数组,每行将是数组中的一个元素。

    编辑List<string>在属性网格中,可以使用以下任一选项:

    • StringCollectionEditor显示一个包含多行文本框的对话框来编辑元素
    • 创建自定义CollectionEditor编辑集合编辑器对话框中的项目

    选项1-StringCollectionEditor

    private List<string> myList = new List<string>();
    [Editor("System.Windows.Forms.Design.StringCollectionEditor, " +
        "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
        typeof(UITypeEditor))]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public List<string> MyList {
        get {
            return myList;
        }
        set {
            myList = value;
        }
    }
    

    enter image description here

    选项2-自定义集合编辑器

    首先创建自定义编辑器:

    //You need to add reference to System.Design
    public class MyStringCollectionEditor : CollectionEditor {
        public MyStringCollectionEditor() : base(type: typeof(List<String>)) { }
        protected override object CreateInstance(Type itemType) {
            return string.Empty;
        }
    }
    

    然后用编辑器属性修饰属性:

    private List<string> myList = new List<string>();
    [Editor(typeof(MyStringCollectionEditor), typeof(UITypeEditor))]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public List<string> MyList {
        get {
            return myList;
        }
        set {
            myList = value;
        }
    }
    

    enter image description here