将KeyValuePair <string,string =“”>的值插入列表控件时,如何停止出现?</string,>

时间:2013-01-22 10:39:39

标签: c# combobox listbox keyvaluepair

目前我正在使用词典以下列格式存储问题的答案: -

Destination:
A1 - Warehouse
A2 - Front Office
A3 - Developer Office
A4 - Admin Office
B1 - Support

A1,A2等是用于在别处选择问题的唯一标识符,最后标记答案,字典存储ID和答案。

这部分一切正常。问题是将数据插入列表框/组合框时。目前我正在使用以下方法:

foreach (KeyValuePair<string, string> oTemp in aoObjectArray)
{
    if (listControl is ComboBox)
    {
        ((ComboBox)listControl).Items.Add(string.Format("{0} - {1}", 
                                          oTemp.Key, oTemp.Value));
    }
    else if (listControl is ListBox)
    {
        ((ListBox)listControl).Items.Add(string.Format("{0} - {1}",
                                         oTemp.Key, oTemp.Value));
    }
}

这会将正确的数据插入到列表/组合框中,但格式如下:

Destination:
[A1: Warehouse]
[A2: Front Office]
[A3: Developer Office]
[A4: Admin Office]
[B1: Support]

我已经尝试了许多其他方法来摆脱方括号。有趣的是,如果我 只是做

((ComboBox)listControl).Items.Add(string.Format(oTemp.Value));

我仍然以[A1:Warehouse]格式获取数据。我怎样才能摆脱方括号?

编辑:被要求添加更多代码。这是完整的添加到列表控件方法:

public static void AddDictionaryToListControl(ListControl listControl,
                              Dictionary<string, string> aoObjectArray)
    {
        foreach (KeyValuePair<string, string> oTemp in aoObjectArray)
        {
            if (listControl is ComboBox)
            {
                ((ComboBox)listControl).Items.Add(string.Format(oTemp.Value));
            }
            else if (listControl is ListBox)
            {
                ((ListBox)listControl).Items.Add(string.Format(oTemp.Value));
            }
        }
    }

此方法从:

调用
    public ComboBox AddQuestionsComboBox(Dictionary<string, string> Items,
                       string Label, string Key, int Order, bool Mandatory)
    {
        ComboBox output; 

        output = AddControl<ComboBox>(Label, Key, Order);
        FormsTools.AddDictionaryToListControl(output, Items);
        AddTagField(output, Tags.Mandatory, Mandatory);

        return output;
    }

使用以下行调用:

AddQuestionsComboBox(question.PickList, question.PromptTitle, question.FieldTag, 
i, offquest.Mandatory);

希望有所帮助。

编辑:我已经尝试了下面的所有建议,但仍然没有任何改进 - 我已经检查并重新检查了代码以及与之相关的所有方法以获得一些我错过的其他格式,并且没有发现任何可能导致格式化的内容在一个阶段正确设置,然后在屏幕上显示时分组。

2 个答案:

答案 0 :(得分:1)

我看不出有问题。

var aoObjectArray = new Dictionary<string, string>();
aoObjectArray["A1"] = "Warehouse";
aoObjectArray["A2"] = "Front Office";
aoObjectArray["A3"] = "Developer Office";

foreach (KeyValuePair<string, string> oTemp in aoObjectArray)
{
    ((ComboBox)listControl).Items.Add(string.Format("{0} - {1}", oTemp.Key, oTemp.Value));
}

答案 1 :(得分:1)

这很愚蠢,但请尝试更改:

((ComboBox)listControl).Items.Add(string.Format("{0} - {1}", 
                                  oTemp.Key, oTemp.Value));

对齐
string item = string.Format("{0} - {1}", oTemp.Key, oTemp.Value);
((ComboBox)listControl).Items.Add(item);