0

就目前而言,我正在使用字典以以下格式存储问题的答案:-

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);

希望有帮助。

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

4

2 回答 2

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));
}
于 2013-01-22T10:48:11.253 回答
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);
于 2013-01-22T11:06:49.090 回答