2012-08-10 95 views
0

我可以知道是否有將項添加到組合框的更簡單方法?目前我只添加了20個已經很長的項目,如果我有100個項目添加到組合框中,該怎麼辦?C#Winforms將項目添加到組合框中的更短的方法

我的代碼:

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!"); 
} 

回答

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文件名,沒有他們的擴展,給你所需要的清單。

+0

這對我來說是個好主意。但是在您向我介紹此方法後,我還有另一個問題。我下載了.xml文件(我在最初的問題中添加了代碼,請看一看)。如何將文件名(不帶.xml擴展名)自動寫入文件,然後使用代碼讀取它? – Shyuan 2012-08-10 01:07:22

+0

或者,我如何直接將下載的文件名顯示到comboComSymbol中? – Shyuan 2012-08-10 01:10:41

+0

它只下載一個文件不是嗎?你能給我一個你下載XML的完整URL的例子嗎? – 2012-08-10 01:38:07

1

您是否嘗試過的方法AddRange()

我沒有測試過:

private void loadSharePricesComboBox() 
{ 

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

    comboComSymbol.SelectedIndex = -1; 
} 

在MSDN上.AddRange可能會給你一個更好的主意。

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

如果你正在開始一個新的項目,看看WPF而不是winforms。

+0

你的回答是有幫助的。 :) 謝謝。但爲什麼你建議WPF?我對編程非常陌生,我的朋友向我介紹了Winforms。 – Shyuan 2012-08-10 01:09:29

+0

@Shyuan WPF和winforms有着天壤之別。 Winforms現在已經過時了。 WPF功能更強大,更靈活。在這裏的評論中很難描述,但如果你是編程新手,你最好還是從最新開始。缺點是它可能被認爲更困難,但只是因爲有更多的選擇。 – MikeKulls 2012-08-10 05:23:09

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"); 
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; 
    } 
相關問題