gpt4 book ai didi

vb.net - 如何在 VB.net 中的 TableLayoutPanel 内的 Groupbox 中组织控件

转载 作者:行者123 更新时间:2023-12-05 05:27:40 24 4
gpt4 key购买 nike

我在 Windows 窗体应用程序设计方面遇到了一个有趣的问题,但我很难解决。我目前正在开发一个程序,该程序应该是我公司使用的某个 list 的数字替代品。这应该是直截了当的,但是程序必须使用 SQL 数据库的内容来确定哪些项目应该在程序的检查列表中(以便于更改检查列表中的项目)。这意味着我必须使用代码而不是我的 Visual Studio 2010 设计器来动态设计和创建我的大部分应用程序。

我已经能够弄清楚 SQL 的内容,甚至是大多数动态设计的内容,但是有一个复杂的问题我似乎无法解决。为了创建 list 的外观,我动态创建了一个包含两列和一行的 TableLayoutPanel。然后我从数据库中获取我的数据并创建一个组框,该组框的标题是使用该程序的人需要执行的说明。我还根据数据库条目将带有标签、复选框或两者的文本框添加到组框。最后,我将文本框、标签和/或复选框添加到组框,然后将一行添加到我的表并将组框添加到该行中的表。但是,组框中的所有控件都混入了行的左上角,因此我尝试使用它们的 .location 属性来调整它们的组织。不幸的是,在我更改该属性的那一刻,受影响的控件从表单中完全消失了。我尝试使用 .bringtofront() 方法但没有成功;控件仍然丢失。

我正在寻找的是有关如何在动态创建的分组框(或任何其他分组控件)中组织动态创建的控件的指南,该分组框本身包含在另一个动态创建的分组控件中。如果我能得到任何帮助,我将不胜感激;这个问题使我无法着手处理程序的功能。适用的代码发布在下面。提前致谢!

Private Sub addItem(ByVal count As Integer, ByVal itemList As List(Of checklistField))
If itemList(count).hasTextbox Or itemList(count).hasCheckbox Then
Dim newGroupbox As New GroupBox
With newGroupbox
.Dock = DockStyle.Fill
.Text = itemList(count).instruction
End With

If ((itemList(count).hasTextbox = True) And (itemList(count).hasCheckbox = False)) Then
Dim newTextboxLabel As New Label
With newTextboxLabel
.Text = itemList(count).textboxLabel
'.Location = New Point(20, (475))
.AutoSize = True
End With

Dim newTextbox As New TextBox
With newTextbox
.Name = "Textbox" & count.ToString
.Size = New Size(100, 20)
'.Location = New Point(100, (470 + (10 * count)))
End With

textboxList.Add(newTextbox)
newGroupbox.Controls.Add(newTextboxLabel)
newGroupbox.Controls.Add(newTextbox)

tblFields.RowCount += 1
tblFields.RowStyles.Add(New RowStyle(SizeType.AutoSize))
tblFields.Controls.Add(newGroupbox, 0, tblFields.RowCount - 1)

最佳答案

您注释掉的 Location 属性的 Y 值设置得太高,因此控件在表单上不可见:

'.Location = New Point(20, (475))
'.Location = New Point(100, (470 + (10 * count)))

控件的位置与父级的客户空间相关,因此使用较小的数字:

With newTextboxLabel
.Text = itemList(count).textboxLabel
.Location = New Point(20, 20)
.AutoSize = True
End With

Dim newTextbox As New TextBox
With newTextbox
.Name = "Textbox" & count.ToString
.Size = New Size(100, 20)
.Location = New Point(20, 40)
End With

关于vb.net - 如何在 VB.net 中的 TableLayoutPanel 内的 Groupbox 中组织控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995456/

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