【问题标题】:Can we create a 1-D array of UserControl. ..?我们可以创建一个 UserControl 的一维数组吗? ..?
【发布时间】:2010-10-07 06:52:30
【问题描述】:

我刚刚在 WINFORMS 中创建了一个"Usercontrol" - 它只包含具有某种风格的 1-Button。

而且我需要使用与 array(10) 相同的方法并将其加载到表单中。

Ex:

Dim myButton() As Button = New ucSpecialButton(dataset4Category(i).Tables(0).Rows.Count - 1) {}

这里我的用户控件名称是ucSpecialButton

can we create a ONE-Dimensional Array of a WINFORM usercontrol.?

【问题讨论】:

  • Control[] foo = new Control[10];。还是我错过了什么?这真的是你想要的吗?

标签: c# vb.net winforms user-controls


【解决方案1】:

用 MAKKAM 的话:是的,你可以。我猜您实际上不确定是否可以向表单添加动态数量的控件,因为在设计器中您无法定义任何数组,您只需在表单上拖放一定数量的控件。

然而,实际上 Visual Studio 只是在后台生成一些代码,将这些控件添加到集合中。您也可以编写自己的代码来动态地将任意数量的 UserControl 添加到集合中。只需查看表单的 .designer.cs 文件即可了解其工作原理。

以 MAKKAM 的数组 controls 为例,它可能看起来像这样,例如:

public MyForm()
{
    InitializeComponent(); // this is the call to the auto-generated code

    // Here you could add you own code:
    foreach (Control control in controls)
    {
        this.Controls.Add(control); // this is how to add a control to the form.
    }
}

【讨论】:

    【解决方案2】:

    是的,你可以。

    Control[] controls = new Control[10]; 
    

    那么,有什么问题呢?

    【讨论】:

      【解决方案3】:

      我刚刚注意到您编辑了您的问题。如果我做对了,那么您现在唯一缺少的是(我是 C# 人,可能是以下 VB.NET 代码中存在一些缺陷):

      for i = 0 to dataset4Category(i).Tables(0).Rows.Count - 1
          myButton(i) = New ucSpecialButton();
          // ... specific button properties ...
      next
      

      因为,您粘贴在问题中的代码还没有创建按钮,它只为数组分配内存:

      Dim myButton() As Button = New ucSpecialButton(
          dataset4Category(i).Tables(0).Rows.Count - 1) {}
      

      New 在这个地方意味着为引用创建一个新数组,而不是创建新对象。 ucSpecialButton(...) 在这个地方不是对象的构造函数。相反,它仅表示您要为其准备数组的对象类型。恕我直言,您也可以写New Button(...)

      顺便说一句:恕我直言,应该是

      `New ucSpecialButton(dataset4Category(i).Tables(0).Rows.Count)`
      

      没有- 1。然而,在 for 循环中,- 1 是正确的(大小为 10 的数组从 0..9 开始)。

      【讨论】:

      • 是的,你的仪式但是..!我不喜欢声明数组。这就是为什么发布这个问题。?
      • 尝试删除 { } 并说“新按钮”而不是“新 ucSpecialButton”。但是,您提供的信息非常多余,很难为您提供帮助。
      猜你喜欢
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多