获取SuggestAppend自动完成模式下组合框中剩余的项目数
本文关键字:项目数 组合 SuggestAppend 模式 获取 | 更新日期: 2023-09-27 18:27:24
我有一个组合框,其中AutoCompleteMode=SuggestAppend和AutoCompleteSource=ListItems。
在SuggestAppend中,当用户输入字符时,会自动筛选列表框控件。
我想在用户输入期间获得列表框中的项目数。在开始时,列表框已完全填充。
我尝试了以下操作,但它总是返回组合中的项目数,而不是列表框中过滤的项目数
int count = ItemsComboBox.Items.Count.ToString();
我不能100%确定你想做什么,但据我所知,目标是自动启用按钮。
ComboBox类具有名为ControlAdded和ControlRemoved的事件,当从ComboBox.Items中添加或删除控件时会发生这些事件。因此,您可以在每次添加/删除控件后检查ComboBox.Items.Count的值。
private void comboBox1_ControlRemoved(object sender, ControlEventArgs e)
{
if (comboBox1.Items.Count == 0) button1.Enabled = false;
}
当然,如果您不仅想检查0,还需要处理ControlAdded和ControlRemoved事件。您可以在Visual Studio中的组合框的属性窗口中双击事件名称旁边,这将在设计器文件中添加以下行:
this.comboBox1.ControlRemoved += new System.Windows.Forms.ControlEventHandler(this.comboBox1_ControlRemoved);
您可以对两个事件使用相同的void(当然,这取决于您的项目)。
这对我来说很成功,但我将AutoCompleteMode = SuggestAppend
更改为AutoCompleteMode = Suggest
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.ComboBox1.Text = ""
Me.ComboBox1.Items.Add("a")
Me.ComboBox1.Items.Add("aaa")
Me.ComboBox1.Items.Add("combo")
Me.ComboBox1.Items.Add("combobox")
Me.ComboBox1.Items.Add("combobox test")
Me.ComboBox1.Items.Add("common")
Me.ComboBox1.Items.Add("common dialog")
End Sub
Private Sub ComboBox1_TextChanged(sender As Object, e As System.EventArgs) Handles ComboBox1.TextChanged
Dim count As Integer = 0
For Each op As String In ComboBox1.Items
If (op Is Nothing OrElse op.Length < ComboBox1.Text.Length) Then
Continue For
End If
If (ComboBox1.Text = op.Substring(0, ComboBox1.Text.Length)) Then
count += 1
End If
Next
Label1.Text = count
End Sub
End Class