.net 带参数的VS设计器和构造函数

.net 带参数的VS设计器和构造函数,.net,winforms,visual-studio,.net,Winforms,Visual Studio,我有一个自定义控件MyControl。具有无参数构造函数(Sub New()在VB中) 我将该控件放在WinForm中 没问题 现在,在该构造函数中需要一个参数子新建(标记为布尔值) 在这种情况下,我应该如何处理VS designer,以便能够在designer中打开该表单 我在我的表格里做了以下几点 Public Sub New() MyBase.New() Me.MyControl_1 = New MyControl(True) Me.InitializeComp

我有一个自定义控件
MyControl
。具有无参数构造函数(
Sub New()
在VB中)

我将该控件放在WinForm中

没问题

现在,在该构造函数中需要一个参数<代码>子新建(标记为布尔值)

在这种情况下,我应该如何处理VS designer,以便能够在designer中打开该表单

我在我的表格里做了以下几点

  Public Sub New()
    MyBase.New()
    Me.MyControl_1 = New MyControl(True)
    Me.InitializeComponent()
但设计师说:

变量'MyControl_1'为 未申报或从未分配


设计器需要可视化组件的无参数构造函数。即使向用户控件添加重载构造函数也会破坏设计器。有关更多信息,请参见问题。

修改此选项

Public Sub New()
    MyBase.New()
    Me.InitializeComponent()
    Me.MyControl_1 = New MyControl(True)

让设计人员在使用cotrol之前对其进行初始化。问题不在于你们的控制,问题在于你们并没有在正确的地方使用

我担心如果我在之后重新初始化它,我会从它的容器中松开它。在这种情况下,我失去了所有设计器参数,为什么不简单地使用一个方法来完成您在ctor中尝试的所有操作呢。并在初始化组件后调用它。我理解。但是我不能使用属性,因为我有一个控件“模式”,它在创建后不能更改。(就像readonly one)。所以我不能也不会使用属性。我需要这个“模式”只设置一次,越早越好。所以我搜索了一个解决方法。重载构造函数不会破坏设计器,只要还有一个无参数构造函数