积极答复者
问一个有关combobox的问题.

问题
-
窗体上有一个textbox和combobox控件,窗体载入时在textbox中输入一个图书编号按回车后, combobox的text值自动显示为该编号对应图书的所属类别.要实现通过此combobox修改图书类别的功能.(combobox的text中有值后,才将combobox绑定了数据)
为了避免用户在combobox的text框中任意输入值,将combobox的dropdownstyle属性改为dropdownlist.
但是经尝试发现这么改不行. 因为改后,输入一个图书编号按回车后,combobox的text值就不能自动显示为该编号对应图书的所属类别了.请问为了避免用户在combobox的text框中任意输入值,这个功能怎样实现?
答案
-
你好!
根据你的需求,我建议直接使用ListBox,而不使用ComboBox。
周雪峰- 已标记为答案 Riquel_DongModerator 2009年5月6日 11:38
全部回复
-
不太明白你的意思。能说详细点吗?
我的代码是:
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() -
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()
知识改变命运,奋斗成就人生!- 已编辑 肖小勇Moderator 2009年5月2日 4:01
-
你好!
根据你的需求,我建议直接使用ListBox,而不使用ComboBox。
周雪峰- 已标记为答案 Riquel_DongModerator 2009年5月6日 11:38