![](/img/trans.png)
[英]How do I populate a drop-down list from XML where text = value1 using Visual Basic?
[英]What's the best way to create a drop-down list in a Windows application using Visual Basic?
我想向Windows应用程序添加一个下拉列表。 它将有两个选择,两个选择均不可编辑。 最好使用什么控件? 是否将编辑属性设置为“否”的组合框?
我正在使用Visual Studio 2008。
建议您阅读《 Windows Vista用户体验指南》 。 听起来好像您最好使用单选按钮,或者如果是明确的开/关情况,则使用复选框。 我认为我们确实需要更多信息。
yourComboBox.DropDownStyle = ComboBoxStyle.DropDownList
将DropDownStyle属性设置为DropDownList。
请参阅http://msdn.microsoft.com/zh-cn/library/system.windows.forms.combobox.dropdownstyle(VS.80).aspx
通过将DropDownStyle属性更改为“ DropDownList”,winforms中的组合框可以用作不可编辑的下拉列表:我认为没有单独的下拉列表控件。
创建两个彼此相邻的文本框TextBox1和TextBox2,为TextBox2设置多行并自动调整大小。
在某处创建下拉列表。 在我的示例中,它在另一个工作表中,包含约13,000个条目。
下面是两个函数,第一个驱动输入框TextBox1。 在键入时,第二个框TextBox2显示剩余的有效选择。 第二个功能是,如果单击第二个框中的选项,则会加载第一个文本框
在下面,必须在当前工作表的单元格B3中加载键入/选择的答案。 在我的应用程序中,我只想搜索大写字符,从而搜索UCase用法。 我的列表数据是Z列中的13302个条目
Private Sub TextBox1_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim curtext As String
Dim k, where As Integer
Dim tmp As String
Dim bigtmp As String
curtext = TextBox1.Text
curtext = UCase(curtext)
TextBox1.Text = curtext
Range("b3").Value = curtext
If Len(curtext) = 0 Then
TextBox2.Visible = False
Exit Sub
End If
TextBox2.Visible = True
Application.ScreenUpdating = False
For k = 2 To 13303 ' YOUR LIST ROWS
tmp = Sheets("General Lookup").Range("Z" & k).Value ' YOUR LIST RANGE
where = InStr(1, tmp, TextBox1.Text, 1)
If where = 1 Then
bigtmp = bigtmp & tmp & Chr(13)
End If
Next
TextBox2.Text = bigtmp
Application.ScreenUpdating = True
End Sub
Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Len(TextBox2.SelText) > 0 Then
TextBox1.Text = TextBox2.SelText
Range("b3").Value = TextBox2.SelText
TextBox2.Visible = False
End If
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.