簡體   English   中英

C#Combobox Selected.Index = -1無法正常工作

[英]C# Combobox Selected.Index = -1 not working

它應該將Combobox重置為無值,Combobox位於同一面板中,但是代碼將索引設置為0,這是數據綁定列表的第一個值。 它可以在第二次單擊時起作用,在第一次單擊時將索引設置為0,第二次將索引設置為-1。

        if (((Button)sender).Parent.Controls.OfType<ComboBox>().Count() > 0)
        {
           foreach(ComboBox C in ((Button)sender).Parent.Controls.OfType<ComboBox>().ToList())
            {
                if(C.SelectedIndex != -1)
                {
                    C.SelectedIndex = -1;
                }
            }
        }

也許您可以嘗試將虛擬的第一項添加到ComboBox中以充當占位符。

這樣,您可以簡單地使用ComboBox.SelectedIndex = 0;取消選擇ComboBox.SelectedIndex = 0;

只是要確保不要在任何地方將ComboBox中的該項解釋為真實項。

另外,請嘗試:

ComboBox.ResetText();
ComboBox.SelectedIndex = -1;

要么:

ComboBox.SelectedItem = null;

謝謝大家的回答...最后,我通過解決方法解決了這個問題。 問題是,上面代碼的按鈕需要單擊兩次才能將索引設置為-1。 第一次單擊時,它將移至0,第二次單擊時將移至-1。 我不知道為什么...另一個問題是我在組合框上發生了索引更改事件,我只想觸發一次,而不是兩次。 我這樣解決了問題...

        if (((Button)sender).Parent.Controls.OfType<ComboBox>().Count() > 0)
        {
           foreach(ComboBox C in ((Button)sender).Parent.Controls.OfType<ComboBox>().ToList())
            {
                if(C.SelectedIndex != -1)
                {
                    C.SelectedIndexChanged -= this.ComboBox_Promo_SelectedIndexChanged;
                    while (C.SelectedIndex != -1)
                    {
                        C.SelectedIndex = -1;
                    }
                    C.SelectedIndexChanged += this.ComboBox_Promo_SelectedIndexChanged;
                    this.ComboBox_Promo_SelectedIndexChanged(C, EventArgs.Empty);
                }
            }
        }

暫無
暫無

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

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