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: 倉庫] 形式でデータを取得します。角かっこを取り除くにはどうすればよいですか?

編集: コードを追加するように求められました。リストコントロールメソッドへの完全な追加は次のとおりです。

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 に答える