获取SuggestAppend自动完成模式下组合框中剩余的项目数

本文关键字:项目数 组合 SuggestAppend 模式 获取 | 更新日期: 2023-09-27 18:27:24

我有一个组合框,其中AutoCompleteMode=SuggestAppend和AutoCompleteSource=ListItems。

在SuggestAppend中,当用户输入字符时,会自动筛选列表框控件。

我想在用户输入期间获得列表框中的项目数。在开始时,列表框已完全填充。

我尝试了以下操作,但它总是返回组合中的项目数,而不是列表框中过滤的项目数

int count = ItemsComboBox.Items.Count.ToString();

获取SuggestAppend自动完成模式下组合框中剩余的项目数

我不能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