gpt4 book ai didi

vb.net - 删除控件集合

转载 作者:行者123 更新时间:2023-12-01 09:03:27 25 4
gpt4 key购买 nike

我有一个表单 (Form1),它有 30 个控件。当我点击一个按钮时,我想删除这 30 个按钮并将其他控件放在表单上。现在,我的问题是这太慢了。

我有这个列表,其中包含我想删除的控件,我用 For Each 遍历它们。

Private Sub ClearControls()
'removing the controls from Me.Controls
For Each Control As Control In ListToDelete
Me.Controls.Remove(Control)
Next
ListToDelete = New List(Of Control)
End Sub

现在,如果您查看表单,您会看到控件被逐个删除。此操作大约需要 0.4 秒(使用内置秒表计时),这太长了。

是否有任何解决方案可以更快地删除控件,或者只能逐个删除控件?

也许一个重要的事实是一切都与数据库相连。这些控件是由我自己定义的一个类(TableDrawer)创建的,它创建一个矩形或圆形(取决于数据库中的信息)。我将自制控件添加到表单中,当我想删除它们时,需要 0.4 秒才能获取表单上的其他控件 - 以及我的数据库中的信息。

希望这能解决一些问题,我希望你能帮助我......它真的必须快一点(我希望能得到 0.1 秒或更低)

最佳答案

首先隐藏面板似乎使控件消失得比仅仅清除面板更快。请参阅此代码:

Option Strict On

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Panel1.Visible = False

If Not Panel1.Controls.OfType(Of Button).Any() Then
For x As Integer = 1 To 10
For y As Integer = 1 To 10
Dim btn As New Button()
btn.Size = New Size(45, 45)
btn.Location = New Point((x - 1) * 45, (y - 1) * 45)
btn.Text = (x * y).ToString()
Panel1.Controls.Add(btn)
btn.Visible = True
Next
Next
End If

Panel1.Visible = True
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Panel1.Visible = False
Panel1.Controls.Clear()
Panel1.Visible = True
End Sub
End Class

此代码有 2 个按钮和一个面板。 Button1 生成 100 个按钮,将它们放在一个面板上。 Button2 在移除面板之前隐藏面板。或许你可以尝试一下这个想法。

关于vb.net - 删除控件集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12622329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com