【问题标题】:VS Designer and constructors with parametersVS Designer 和带参数的构造函数
【发布时间】:2011-02-15 13:32:46
【问题描述】:

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

我将该控件放在 WinForm 中。

没问题。

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

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

我在 myForm 中做了以下操作

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

但设计师说:

变量“MyControl_1”是 未声明或从未分配。

【问题讨论】:

    标签: .net winforms visual-studio


    【解决方案1】:

    设计者需要一个无参数的可视化组件构造函数。即使将重载的构造函数添加到用户控件也会破坏设计器。有关详细信息,请参阅this 问题。

    【讨论】:

    • 是的。我明白。但我不能使用属性,因为我有一个控件“模式”,它在创建后无法更改。 (如只读一个)。所以我不能也不会使用属性。我需要这个“模式”设置一次,越早越好。所以我搜索了一个解决方法。
    • 一个重载的构造函数不会破坏设计器,只要还有一个无参数的构造函数
    【解决方案2】:

    修改成这个

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

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

    【讨论】:

    • 我担心如果我之后重新初始化它,我会把它从容器中松开。
    • 和。我失去了所有的设计师参数
    • 在这种情况下,为什么不简单地使用一种方法来完成您在 ctor 中尝试执行的所有操作。并在 InitializeComponent 之后调用
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多