2011-02-15 84 views
1

我有一个自定义控件MyControl。有一个无参数的构造函数(VB中的Sub New())。VS设计者和构造函数参数

我将该控件放在WinForm中。

没问题。

现在,在该构造函数中需要一个参数。 Sub New(flag as Boolean)

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

我的确在myForm的以下

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

但设计师说:

变量 'MyControl_1' 为 未声明或从未分配。

回答

2

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

+0

是的。我明白。但是我不能使用属性,因为我有一个控件“模式”,它在创建后无法更改。 (比如只读一个)。所以我不能也不会使用属性。我需要这个“模式”只设置一次,尽可能早。所以我搜索了一个解决方法。 – serhio 2011-02-15 14:26:14

+0

一个重载的构造函数不会破坏设计器,只要还有一个无参数的构造函数 – 2014-01-01 19:01:43

1

修改这个

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

让设计师初始化cotrol。问题不在于你的控制,问题是你没有在正确的地方使用。