簡體   English   中英

組合框C#SelectedItem不起作用

[英]Combobox c# SelectedItem not work

我是C#的大三學生。 我對Combobox有問題。 當我使用SelectedItem無法正常工作時,我想要什么。 SelectedItem始終返回組合框中的最后一項,但是當我使用SelectedIndex時返回正確的結果。

組合框中的示例包括3個項目:管理員,審核,推銷員。 當我使用SelectedItem時,即使選擇Admin,也總是返回Salesman。

有我的代碼:

ComboboxItem類

    class ComboboxItem
{
    public string Text { get; set; }
    public object Value { get; set; }

    public override string ToString()
    {
        return Value.ToString();
    }
}

將項目添加到組合框

        private void AddItemIntoComboBoxGroup()
    {
        string query = "SELECT* FROM kites_mango.staff_group; ";
        DBUtility data = new DBUtility();
        List<string>[] list = data.Select(query);

        if (list != null && list[0].Count() > 0)
        {
            ComboboxItem item = new ComboboxItem();
            for (int i = 0; i < list[0].Count(); i++)
            {
                item.Value = list[0][i];
                item.Text = (list[1][i] + " - " + list[0][i]);
                CbBGroup.Items.Add(item);
            }
        }
    }

獲取選擇的項目

            if (CbBGroup.SelectedItem != null)
        {
            MessageBox.Show(CbBGroup.SelectedIndex + "/" + CbBGroup.SelectedItem.ToString());
        }

您要在for循環之前實例化ComboboxItem對象。 這樣,對於for語句中的每個循環,您都在更改同一對象的屬性,從而使列表中之前加載的對象也被修改。 也就是說,您的列表可能具有3個iten,但是它們將具有相同的值(推銷員),因為列表中的所有iten具有相同的對象引用。

只是從此更改:

        ComboboxItem item = new ComboboxItem();
        for (int i = 0; i < list[0].Count(); i++)
        {
            item.Value = list[0][i];
            item.Text = (list[1][i] + " - " + list[0][i]);
            CbBGroup.Items.Add(item);
        }

對此:

        for (int i = 0; i < list[0].Count(); i++)
        {
            ComboboxItem item = new ComboboxItem();
            item.Value = list[0][i];
            item.Text = (list[1][i] + " - " + list[0][i]);
            CbBGroup.Items.Add(item);
        }

暫無
暫無

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

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