Winforms Designer:修改(并保留)子对象中的属性

pet*_*hen 1 c# designer custom-controls winforms

对于WinForms控件,我想将某些设置移动到子对象中.其中一个是包含所有UI字符串的自定义类,另一个是OpenFileDialog:

class MyControl: Control
{
  // ...
  private OpenFileDialog m_dlgOpen = new OpenFileDialog();
  public OpenFileDialog DialogOpen
  {
     get { return m_dlgOpen; }
  }
}
Run Code Online (Sandbox Code Playgroud)

这会将子对象添加到设计器,并允许编辑其属性(例如标题,默认扩展名,过滤器).但是,更改是添加到InitalizeComponent方法中的,因此它们会丢失.

是否可以在InitializeComponent方法中"保持"此属性?

Han*_*ant 5

告诉设计者序列化对象本身:

  [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
  public OpenFileDialog DialogOpen {
    get { return m_dlgOpen; }
  }
Run Code Online (Sandbox Code Playgroud)