Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何快速创建上千个按钮?_Vb.net - Fatal编程技术网

Vb.net 如何快速创建上千个按钮?

Vb.net 如何快速创建上千个按钮?,vb.net,Vb.net,我有一个可以创建4000个新按钮的程序,但我花了30秒才完成。有没有办法加快速度 For x = 1 To 4000 Dim btnNew As New Button() btnNew.Width = 14 btnNew.Height = 11 btnNew.Location = New Point(a, b) Me.Controls.Add(btnNew) btn(k) = btnNew Next 您确实需要做三件事: 调用Suspen

我有一个可以创建4000个新按钮的程序,但我花了30秒才完成。有没有办法加快速度

For x = 1 To 4000

    Dim btnNew As New Button()

    btnNew.Width = 14
    btnNew.Height = 11

    btnNew.Location = New Point(a, b)
    Me.Controls.Add(btnNew)
    btn(k) = btnNew

Next

您确实需要做三件事:

  • 调用SuspendLayout/ResumeLayout(保存所有多个布局)
  • 您可以改为调用AddRange
  • 如果容器支持BeginUpdate/EndUpdate,则使用这两个(以保存重新绘制)
  • 因此,请尝试:

    Me.SuspendLayout()
    Try
        For x As Integer = 1 To 4000
    
            Dim btnNew As New Button()
    
            btnNew.Width = 14
            btnNew.Height = 11
    
            btnNew.Location = New Point(a, b)
            Me.Controls.Add(btnNew)
            btn(k) = btnNew
    
        Next
    Catch ex As Exception
        Throw
    Finally
       Me.ResumeLayout()
    End Try
    

    您确实需要做三件事:

  • 调用SuspendLayout/ResumeLayout(保存所有多个布局)
  • 您可以改为调用AddRange
  • 如果容器支持BeginUpdate/EndUpdate,则使用这两个(以保存重新绘制)
  • 因此,请尝试:

    Me.SuspendLayout()
    Try
        For x As Integer = 1 To 4000
    
            Dim btnNew As New Button()
    
            btnNew.Width = 14
            btnNew.Height = 11
    
            btnNew.Location = New Point(a, b)
            Me.Controls.Add(btnNew)
            btn(k) = btnNew
    
        Next
    Catch ex As Exception
        Throw
    Finally
       Me.ResumeLayout()
    End Try
    

    你究竟为什么一开始就想做这样的事?首先将所有
    按钮
    控件添加到
    面板
    或类似控件中,然后将其添加到表单中可能会更快,但我不知道这是否会产生影响。您还可以考虑只画按钮的表示,而不是创建实际的控件,然后处理窗体的<代码> MouseClick < /代码>事件,以确定单击哪个按钮。我所见过的最大按钮计数是在周期表(化学)程序上的,但即使只有一百个左右(每个元素一个)。我感兴趣的是什么应用程序需要4000个按钮:-)无论你认为需要4000个按钮来解决什么问题,你都不需要。确实有一种更快的方法来解决您的问题,但这意味着考虑一种更理智的设计。4000个按钮永远是错误的答案。@jmchilinney也许这是一个新的计算机速度指标“你在那东西上每秒有多少个按钮?我的只能做133个/秒。”用
    Me.SuspendLayout
    Me.resumellayout
    来包装你的代码。你究竟为什么首先要做这样的事情?首先将所有
    按钮
    控件添加到
    面板
    或类似控件中,然后将其添加到表单中可能会更快,但我不知道这是否会产生影响。您还可以考虑只画按钮的表示,而不是创建实际的控件,然后处理窗体的<代码> MouseClick < /代码>事件,以确定单击哪个按钮。我所见过的最大按钮计数是在周期表(化学)程序上的,但即使只有一百个左右(每个元素一个)。我感兴趣的是什么应用程序需要4000个按钮:-)无论你认为需要4000个按钮来解决什么问题,你都不需要。确实有一种更快的方法来解决您的问题,但这意味着考虑一种更理智的设计。4000个按钮总是错误的答案。@jmchilinney也许这是一个新的计算机速度指标“你每秒在那东西上有多少个按钮?我的只能每秒133个。”用
    Me.SuspendLayout
    Me.resumellayout