0

アイテムをコンボボックスに追加するより短い方法があることを知っていますか? 現在、すでに非常に長いように見える 20 個のアイテムしか追加していません。comboBox に追加するアイテムが 100 個ある場合はどうなりますか?

私のコード:

private void loadSharePricesComboBox()
{
    comboComSymbol.Items.Add("BARC");
    comboComSymbol.Items.Add("DEB");
    comboComSymbol.Items.Add("DOM");
    comboComSymbol.Items.Add("EZJ");
    comboComSymbol.Items.Add("GFS");
    comboComSymbol.Items.Add("IHG");
    comboComSymbol.Items.Add("JD.");
    comboComSymbol.Items.Add("LAD");
    comboComSymbol.Items.Add("LLOY");
    comboComSymbol.Items.Add("MRW");
    comboComSymbol.Items.Add("NXT");
    comboComSymbol.Items.Add("OCDO");
    comboComSymbol.Items.Add("RBS");
    comboComSymbol.Items.Add("SMWH");
    comboComSymbol.Items.Add("SPD");
    comboComSymbol.Items.Add("STAN");
    comboComSymbol.Items.Add("SYR");
    comboComSymbol.Items.Add("TALK");
    comboComSymbol.Items.Add("TSCO");
    comboComSymbol.Items.Add("WMH");

    comboComSymbol.SelectedIndex = -1;
}

あなたの助けは大歓迎です! ありがとうございました。:)

追加コード (サイモン ホワイトヘッドに尋ねた質問):

private void btnDownloadXML_Click(object sender, EventArgs e)
{
    using (WebClient client = new WebClient())
    {
        client.DownloadFile("http://www.lse.co.uk/chat/" + comboDownloadXML.SelectedItem,
                            @"..\..\sharePriceXML\" + comboDownloadXML.SelectedItem + ".xml");
    }
    MessageBox.Show("Download Completed! File has been placed in the folder sharePriceXML!");
}
4

6 に答える 6

1

方法は試しましたAddRange()か?

私はテストしていません:

private void loadSharePricesComboBox()
{

     comboComSymbol.Items.AddRange(new string[]{"BARC", "DEB", ... etc});

    comboComSymbol.SelectedIndex = -1;
}

MSDN on.AddRangeは、より良いアイデアを提供するかもしれません。

于 2012-08-10T00:55:56.667 に答える
1
foreach(var item in "BARC,DEB,DOM,...".Split(',')) comboComSybol.Items.Add(item);

また

var items = new [] { "BARC", "DEV", "DOM" };
foreach(var item in items) comboComSymbol.Items.Add(item);

または、さらに多くのコードを保存して、上記の 2 つのメソッドで AddRange を使用することもできます。

var items = new [] { "BARC", "DEV", "DOM" };
comboComSymbol.Items.AddRange(items);

ただし、新しいプロジェクトを開始する場合は、winforms の代わりに WPF を見てください。

于 2012-08-10T00:57:06.363 に答える
1

ListBox.ObjectCollection.AddRangeを使用
します。次のように使用できます。
comboComSymbol.Items.AddRange(new string[] {"ABC", "DEF", "GHI"});

于 2012-08-10T01:01:09.793 に答える
0

ジェネリックList<T>を使用してデータバインドします。

class Symbols
{
public string Name{get;set;}
}

var Symb= new List<Symbols> { new Symbols() { Name = "Abc"}, new Person() { Name = "BC" }};
        comboBox1.DisplayMember = "Name";
        comboBox1.DataSource = Symb;
        comboBox1.DataBindings.Add("SelectedItem", Symb, "Name");
于 2012-08-10T00:58:43.403 に答える
0

コードサイズを節約するには..それらをファイルにリストしてみませんか?

void loadSharePricesComboBox(string fileName) {
    using (StreamReader sr = new StreamReader(fileName)) {
        while (!sr.EndOfStream) {
            comboComSymbol.Items.Add(sr.ReadLine());
        }
    }
}

編集:あなたのコメントに応えて..拡張子なしでファイルをロードするだけです..それははるかに簡単です:

void loadSharePricesComboBox(string path) {
    foreach (string file in Directory.GetFiles(path, "*.xml")) {
        comboComSymbol.Items.Add(Path.GetFileNameWithoutExtension(file));
    }
}

XML ファイル名をロードするパスを次のように渡します。

loadSharePricesComboBox(@"..\..\sharePriceXML\");

これにより、すべての XML ファイル名が拡張子なしで読み込まれ、必要なリストが得られます。

于 2012-08-10T00:59:42.417 に答える
0

このコード:

string[] str = {
                "BARC","DEB","DOM","EZJ","GFS","IHG","JD.","LAD","LLOY","MRW",
                "NXT","OCDO","RBS","SMWH","SPD","STAN","SYR","TALK","TSCO","WMH"
                };


 loadSharePricesComboBox(str);

あなたの方法:

private void loadSharePricesComboBox(string[] strArr)
    {
        comboComSymbol.Items.AddRange(strArr);
        comboComSymbol.SelectedIndex = -1;
    }
于 2012-08-10T01:07:01.850 に答える