首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有多个字段可供选择的VB.NET组合框

具有多个字段可供选择的VB.NET组合框
EN

Stack Overflow用户
提问于 2020-05-30 19:15:12
回答 1查看 201关注 0票数 0

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

在我的Access表单中,我有一个组合框,它允许用户从表中选择一个部件记录。使用Access,我可以向做出选择的用户显示多个列-- PartID、Description、notes等等。然而,一旦选择了部件,组合框关闭,我只显示唯一的部件ID。其他列帮助用户选择,但使表单看起来非常混乱。

在我的VB.NET表单中,我将ValueMember设置为PartID。但我只知道如何将DisplayMember设置为单个字段。我创建了一个复合字段"PartID \ selection \ Notes“,但这就是即使在选择完成之后也会出现的内容。

在VB.NET中,是否可以在打开框时显示一件东西,在选择完成后显示另一件东西?

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-30 22:05:55

我明白你想做什么了。我在MS Access上也是这么做的,但那是20多年前的事了。

我同意吉米的看法。从设计的角度来看,尝试在新的环境中复制类似于访问的特性并不是一个好主意。

用户熟悉Winforms控件,在UI布局和一致性方面有一定的期望。如果你正在从头开始构建一个新的UI,你应该抓住机会重新设计它并使它现代化。不要只带着25岁的习惯。尤其是如果您不是该应用程序的唯一用户,因为您不希望人们认为您的编码方法停留在20世纪.

在VB.NET中,是否可以在打开框时显示一件东西,在选择完成后显示另一件东西?

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

以下是如何做到这一点:

代码语言:javascript
复制
  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听起来像是明显的替代品。但你说过你想要一个“紧凑”的控制。这就是你要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62107541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档