如何在DropDownStyle属性为下拉列表的情况下清除combox选定的文本

本文关键字:清除 情况下 combox 文本 下拉列表 DropDownStyle 属性 | 更新日期: 2023-09-27 17:51:06

我在windows窗体应用程序工作。我有一个组合框。我给combobox
DropDownStyle property to DropDownList。一个清晰的按钮,我给了这样的代码:

cmbvisitpurpose.Text = "" 

如果组合框属性下拉列表,那么它不会清除组合框中的选定文本。

在clear button code中我必须输入

cmbvisitpurpose.SelectedIndex = -1

但是,在cmvisit的目的。selecteindex事件我写了很多代码,有些别的目的。每次清除都会影响代码,那么还有其他方法来清除组合框选中的文本吗?所以。
我不想使用SelectedIndex。是否有其他方法可以代替SelectedIndex

如何在DropDownStyle属性为下拉列表的情况下清除combox选定的文本

你可以尝试使用RemoveAt后,你选择你的元素要删除,就像这样:

private void button1_Click(object sender, EventArgs e)
    {
        //Remove item at Index 1
        comboBox1.Items.RemoveAt(comboBox1.SelectedIndex = 1) ;
    }

你甚至可以这样清除你所有的元素:

private void button1_Click(object sender, EventArgs e)
    {
       //Remove all the item 
        comboBox1.Items.Clear();
    }

如果你将DropDownStyle设置为DropDownList,那么恐怕你没有任何其他方法来清除所选文本。我想不出你在评论中提到的任何"其他方法"。如果你试图清除选择,SelectionIndexChanged将触发。

一个简单的解决方案,根据我将是一个if子句在你的事件处理程序只是绕过情况下,当SelectedIndex是-1

如果您根本不希望事件触发,一种方法是在每次清除选定项时删除事件处理程序。比如点击一个按钮,你可以这样做:

 cmbvisitpurpose.SelectedIndexChanged -= cmbvisitpurpose_SelectedIndexChanged;
 cmbvisitpurpose.SelectedIndex = -1;
 cmbvisitpurpose.SelectedIndexChanged += cmbvisitpurpose_SelectedIndexChanged;