【问题标题】:Display members and Value members显示成员和值成员
【发布时间】:2023-04-10 17:05:01
【问题描述】:

您好我是VB平台的新手,谁能帮我理解最后几行代码,这里我最后用粗体突出显示,这让我不理解或困惑。那个显示成员和值号有什么作用?

.. cmbcust 是组合框...

客户表在哪里有以下字段。

**Customer_sname** **Customer_code** **Customer_fname**
nokia       1       nokia corp.
samsung     2       samsung corp.
sony        3       sony corp.
Micromax    4       Micromax India corp.

通过custval是诺基亚、三星、索尼

Public Function customfunc(ByVal custval As String) As DataSet
        Try
            Dim strSQL As String = "select * from customer  where  cust_sname  in (" & custval & ")"
            If Conn.State = ConnectionState.Open Then Conn.Close()
            Conn.Open()
            Dim Adap As New SqlDataAdapter(strSQL, Conn)
            Dim Ds As New DataSet
            Adap.Fill(Ds, "customer")
            ReadINICustomers = Ds
        Catch EXP As Exception
            MsgBox("Error Connecting to Server :" & EXP.Message, MsgBoxStyle.Critical)
        End Try
    End Function


   Public Sub Fillcustomer()
        Dim Lstcust() As String
        Dim Lstcust1 As String
        Lstcust1 = ""
        Lstcust1 = custINIval
        Dim Ds As New DataSet
        Ds = objData.ReadINICustomers(Lstcust1)
        cmbcust.DataSource = Ds.Tables("customer")
        cmbcust.DisplayMember = Ds.Tables("customer").Columns.Item("cust_sname").ToString().Trim()
        cmbcust.ValueMember = Ds.Tables("customer").Columns.Item("cust_code").ToString().Trim()
    End Sub

cmbcust.DisplayMember = Ds.Tables("customer").Columns.Item("cust_sname").ToString().Trim() cmbcust.ValueMember = Ds.Tables("customer").Columns.Item("cust_code").ToString().Trim()

【问题讨论】:

  • docs 非常清楚。 ValueMember 是控件中项目的实际值,而 DisplayMember 是 UI 中显示的内容。
  • 如果有人选择了sonyValueMember 将返回 3。
  • 请注意,您的函数名称是 funcion,这是 VB.Net 中的保留字。您不能使用KeyWords 作为某事物的名称。它也会导致编译器错误。
  • @Eminem 如果你要指出用户的错误,至少在你指出错误时要正确:) 它应该是 function NOT @987654329 @...
  • @Eminem,我刚刚重命名,以便从我的主要来源发布到 stackoverflow。

标签: vb.net combobox valuemember


【解决方案1】:

在使用任何 .NET 语言(例如 VB.NET)时,the MSDN 是您的朋友。它是有关 .NET Framework 中的语言和所有类型的文档的官方资源。在这种情况下,您要询问ComboBox 控件上的几个属性。那么,您应该做的第一件事是在 MSDN 中搜索 ComboBox 类。如果你这样做,你会找到this article。它列出了该类的所有成员,并有一篇单独的文章解释每个成员。如果您向下滚动属性列表,您将找到指向 DisplayMember 属性和 ValueMember 属性的文章的链接。

正如那些文章所述,ComboBox 控件可以在其项目列表中包含任何类型的对象。如果您将诸如字符串列表之类的简单内容放入ComboBox,那么它显然很容易确定在列表中显示什么以及为其当前值返回什么。但是,当您在ComboBox 中放置复杂的自定义对象时,这是一个更加困难的提议。

默认情况下,它将显示ToString 方法为其列表中的每个对象返回的任何内容。但是,通过设置DisplayMember 属性,您可以指示它使用列表中对象的特定成员(例如PropertyFunction)而不是ToString 方法。为此,您可以将DisplayMember 属性设置为对象成员的字符串名称。然后它使用reflection 在每个对象中查找该名称的成员并检索其值。

ValueMember 非常相似,但不是控制显示的内容,而是控制SelectedValue 属性返回的内容。默认情况下,SelectedValue 属性仅返回在列表中选择的整个对象。但是,通过设置ValueMember,您可以指示它只返回对象中一个特定成员的值,而不是整个对象。

【讨论】:

  • 感谢 Steven,从现在开始,我将参考 MSDN 来解决任何 .net 框架的疑问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 2014-05-14
相关资源
最近更新 更多