繁体   English   中英

使用Visual Basic在Windows应用程序中创建下拉列表的最佳方法是什么?

[英]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”,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM