簡體   English   中英

獲取在“建議添加自動完成”模式下組合框中剩余的項目數

[英]Get number of items left in combobox in SuggestAppend AutoComplete mode

我有一個帶有AutoCompleteMode = RecommendationAppend和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和Control Removed事件。您可以雙擊事件名稱旁邊的此事件,以在Visual Studio中使用ComboBox的Properties Windows。將以下行添加到Designer文件中:

this.comboBox1.ControlRemoved += new System.Windows.Forms.ControlEventHandler(this.comboBox1_ControlRemoved);

您可以為兩個事件使用相同的void(當然,這取決於您的項目)。

這摸索出適合我,但我改變了AutoCompleteMode = SuggestAppendAutoCompleteMode = 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM