我正在开发一个应用程序(VB.NET 和 Visual Studio 2010 Pro),需要以下方面的帮助:
1)项目/产品存储在数据库中,这些项目存储在特定的组下。
2)加载我的表单后,我需要获取项目表中所有组的列表并为每个组项创建一个按钮,除此之外,它还必须为每个组添加一个选项卡到相邻的选项卡控制。我已经能够做到这一点,但不使用按钮,而是使用列表视图。我的完美解决方案将能够使用按钮来做到这一点。
3)在为选项卡及其各自的选项卡创建按钮后,我需要使用各自组下列出的项目进一步填充每个选项卡,这里的项目也需要在理想情况下显示为按钮,但我将使用如果需要,请查看列表视图。
4) 我想让它一旦创建组和项目的按钮,如果不是永久地仅用于运行应用程序的会话,则必须将其保存为界面的一部分。(即不必在每次加载标签页时都重新创建它,而应该在每次运行应用程序时只创建一次。)
这是我从数据库中获取组并填充列表视图的代码,以及用于生成选项卡并向选项卡添加列表视图的代码:
Private Sub frmItemSearch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lstItemGroups.Clear()
tbItemGroups.TabPages.Clear()
If openConnection(SQLConnection6) Then
Dim cmd2 As String = "select distinct itemgroup " & vbCrLf & _
"from stkitem" & vbCrLf & _
"where ItemGroup != ''" & vbCrLf & _
"order by ItemGroup asc"
SQLCommand5 = New SqlClient.SqlCommand(cmd2, SQLConnection6)
SQLReader6 = SQLCommand5.ExecuteReader
While SQLReader6.Read
lstItemGroups.Items.Add(SQLReader6.Item(0))
End While
End If
Dim x, i, index As Integer
x = lstItemGroups.Items.Count
i = 0
index = 0
Dim NewTab As New TabPage()
'MessageBox.Show(x)
While i < x
NewTab.Text = lstItemGroups.Items(i).Text
tbItemGroups.TabPages.Insert(index, NewTab)
i += 1
index += 1
End While
End Sub
Private Sub lstItemGroups_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstItemGroups.Click
Dim lstMenuItems As New ListView()
lstMenuItems.BackColor = Color.Blue
lstMenuItems.Dock = DockStyle.Fill
lstMenuItems.Items.Add("A")
lstMenuItems.Items.Add("A")
lstMenuItems.Items.Add("A")
lstMenuItems.Items.Add("A")
lstMenuItems.Items.Add("A")
Dim index As Integer = lstItemGroups.SelectedIndices(0)
tbItemGroups.SelectedIndex = index
tbItemGroups.SelectedTab.Controls.Add(lstMenuItems)
End Sub
这里的问题是,当我单击组时,会选择相应的选项卡,但不会将列表视图添加到选项卡中。如果我能做到这一点,那么使用该组中的项目填充它是可以实现的,因为它与在组列表视图中填充组相同。(在我的代码中添加到列表视图的项目仅用于测试目的。)
所以总而言之,
主要问题是如何将列表视图添加到动态生成的选项卡中?
如果您可以帮助解决使用按钮而不是列表视图的解决方案,那将是很棒的,我将不胜感激。
提前致谢,