VB.NET组合框,其中有多个字段可供选择

问题描述 投票:0回答:1

[我正在将我写的Access数据库移植到VB.NET,虽然我已经使用Access 25年了,但是我已经使用VB.NET了2天,所以我不清楚功能是什么。

在我的访问表格中,我有一个组合框,允许用户从表中选择零件记录。使用Access,我可以向用户显示多个列以进行选择-PartID,描述,注释等。但是,一旦选择了零件并关闭了组合框,我将仅显示唯一的零件ID。其他列可帮助用户选择,但使表单看起来很混乱。

在我的VB.NET表单中,我将ValueMember设置为PartID。但是我只知道如何将DisplayMember设置为单个字段。我创建了一个复合字段“ PartID | Description | Notes”,但是即使选择了该字段,也仍会显示出来。

在VB.NET中,当框打开时是否可以显示一件事,而在选择之后就可以显示另一件事?

    qry = "SELECT PartID, cast(PartID as string) & " | " & [partName] AS PartString
            FROM [Part_List]
            GROUP BY PartID, cast(PartID as string) & " | " & [partName]
            ORDER BY PartID;"
    cmd = New SqlCommand(qry, conn)
    adapter = New SqlDataAdapter(cmd)
    Dim tblPN As New DataTable()
    adapter.Fill(tblPN)

    ChoosePartNum.DataSource = tblPN
    ChoosePartNum.DisplayMember = "PartString"
    ChoosePartNum.ValueMember = "PartID"
    ChoosePartNum.SelectedIndex = -1
vb.net ms-access combobox
1个回答
0
投票

我明白了您要做什么。我也在MS Access中这样做,但是已经有20多年了。

我同意Jimi。从设计的角度来看,尝试在新环境中重现类似Access的功能不是一个好主意。

用户熟悉Winforms控件,并且对UI布局和一致性有一定的期望。如果要从头开始构建新的UI,则应趁此机会对其进行重新设计和使其现代化。不要仅仅保留25岁的习惯。特别是如果您不是该应用程序的唯一用户,因为您不希望人们认为您的编码方法陷于20世纪...

当框打开时,在VB.NET中是否可能显示一件事,选择之后还有另一件事吗?

如果您确实要实现此行为,则需要使用组合框事件。您需要的两个事件是DropDownClosedDropDown

这里是怎么做:

  Private Sub ComboBox1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDown
        With Me.ChoosePartNum
            .DisplayMember = "composite field"
        End With
    End Sub

    Private Sub ComboBox1_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDownClosed
        With Me.ChoosePartNum
            .DisplayMember = "PartID"
        End With
    End Sub

技巧是每当用户折叠/展开组合框时,更改DisplayMember属性。基础值保持不变。

我不知道您是否需要通过键盘自动完成或有其他需求。 treeviewlistview听起来很明显。但是您说过您想要一个“紧凑”控件。给你。

© www.soinside.com 2019 - 2024. All rights reserved.