none
问一个有关combobox的问题. RRS feed

  • 问题

  • 窗体上有一个textbox和combobox控件,窗体载入时在textbox中输入一个图书编号按回车后, combobox的text值自动显示为该编号对应图书的所属类别.要实现通过此combobox修改图书类别的功能.(combobox的text中有值后,才将combobox绑定了数据)
    为了避免用户在combobox的text框中任意输入值,将combobox的dropdownstyle属性改为dropdownlist.
    但是经尝试发现这么改不行. 因为改后,输入一个图书编号按回车后,combobox的text值就不能自动显示为该编号对应图书的所属类别了.请问为了避免用户在combobox的text框中任意输入值,这个功能怎样实现?
    2009年5月2日 2:18

答案

全部回复

  • 你好,试试comboBox1.SelectedItem
    知识改变命运,奋斗成就人生!
    2009年5月2日 2:33
    版主
  • 不太明白你的意思。能说详细点吗?
    我的代码是:
    con.Open()
            Dim cmd As New SqlCommand("select btypename from booktype where btypeno='" & TextBox1.Text & "'", con)
            Dim reader As SqlDataReader
            reader = cmd.ExecuteReader()
            If (reader.Read) Then
                ComboBox1.Text = reader("btypename")
                ComboBox1.Text = ComboBox1.Text.Trim

                ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList

            Else
                MsgBox("无此号!请重输")
                TextBox1.Focus()
            End If
            reader.Close()

            Dim myda As New SqlDataAdapter("select btypename from booktype ", con)
            Dim myds As New DataSet
            myda.Fill(myds, "booktype")
            Dim dr As DataRow
            For Each dr In myds.Tables("booktype").Rows
                If Not (dr.Item(0) = ComboBox1.Text) Then
                    ComboBox1.Items.Add(dr.Item(0))
                End If
            Next
            con.Close()

    2009年5月2日 3:43
  • 	con.Open()
            Dim myda As New SqlDataAdapter("select btypename from booktype ", con)
            Dim myds As New DataSet
            myda.Fill(myds, "booktype")
            Dim dr As DataRow
            For Each dr In myds.Tables("booktype").Rows
                ComboBox1.Items.Add(dr.Item(0))
            Next
    
    // 上面的代码可以放在构造函数或Load事件中,无需运行多次,你自己再调整一下
    
            
            Dim cmd As New SqlCommand("select btypename from booktype where btypeno='" & TextBox1.Text & "'", con)
            Dim reader As SqlDataReader
            reader = cmd.ExecuteReader()
            If (reader.Read) Then
                ComboBox1.SelectedItem = reader("btypename")
            Else
                MsgBox("无此号!请重输")
                TextBox1.Focus()
            End If
            reader.Close()
    
            con.Close()
    

    知识改变命运,奋斗成就人生!
    2009年5月2日 3:59
    版主
  • 你好!
         根据你的需求,我建议直接使用ListBox,而不使用ComboBox。
    周雪峰
    2009年5月2日 5:13
    版主
  • 问题已经解决,你的建议很好!
    2009年5月2日 6:32
  • 谢谢提议!
    2009年5月2日 6:33
  • 不用客气啊!
    周雪峰
    2009年5月2日 8:06
    版主