2011-02-15 51 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。問題不在於你的控制,問題是你沒有在正確的地方使用。