VS 環境中 Property Editor 分兩類:內建與自訂。本章介紹兩者,重點說明內建 Collection Editor。
EditorAttribute:指定編輯器類型DesignerSerializationVisibilityAttribute:指定結果是否持久化至代碼LocalizableAttribute:本地化時自動駐留資源檔public class Demo3 : Component {
public Demo3() { _students = new List<Student>(); }
private List<Student> _students;
private string _grade;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<Student> Students {
get { return _students; }
set { _students = value; }
}
[Editor(typeof(GradeEditor), typeof(UITypeEditor)), LocalizableAttribute(true)]
public string Grade {
get { return _grade; }
set { _grade = value; }
}
}
public class Student { public int Id {get;set;} public string Name {get;set;} }
public class GradeEditor : UITypeEditor {
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) {
return UITypeEditorEditStyle.Modal; // 彈出式
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) {
var svc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
var dlg = new frmGradeEditor();
svc.ShowDialog(dlg);
string grade = dlg.Grade;
dlg.Dispose();
return grade;
}
}
效果:
