选择ComboBox选项并下载文件

时间:2016-09-08 17:57:47

标签: c# winforms combobox

我有一个包含30个选项的ComboBox。 id喜欢做的是能够让程序知道选择了哪个选项以及用于该选项的下载链接。我可以使用if else语句,但有30个选项似乎非常不必要。

如果选项1,则下载链接1.否则如果选项2,则下载链接2 ..等等

这似乎太麻烦了。有没有更好的方法来说明何时选择一个选项,使用相应的下载值?

我想以某种方式存储每个组合框选项(显示文本)的值(url),然后在需要调用url链接时使用所选项值。我不确定如何在Visual Studio中使用Windows窗体完成这项工作

4 个答案:

答案 0 :(得分:1)

通过声明一个新类并使用DataSource属性,您可以使用ComboBox处理复杂对象

    class Item
    {
        public string Name { get; set; }
        public string Url { get; set; }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        List<Item> items = new List<Item>() { new Item() { Name = "Item1", Url = "http://item1" }, new Item() { Name = "Item2", Url = "http://item2" } };
        comboBox1.DisplayMember = "Name";
        comboBox1.ValueMember = "Url";
        comboBox1.DataSource = items;
        comboBox1.SelectedValueChanged += ComboBox1_SelectedValueChanged;
    }

    private void ComboBox1_SelectedValueChanged(object sender, EventArgs e)
    {
        if (comboBox1.SelectedValue != null)
        {
            MessageBox.Show(comboBox1.SelectedValue.ToString());
        }

    }

答案 1 :(得分:0)

private void addComboBox(){
   ComboBox cB = new ComboBox();
   ArrayList items = new ArrayList();
   cB.Items.Add(new items("Select a File",""));
   cB.Items.Add(new items("myFile.txt",@"c:\myfile.txt"));
   cB.Items.Add(new items("yourFile.csv",@"d:\oldFiles\yourfile.csv"));
   cB.SelectedIndex=0;
   cB.AutoPostBack = true;
   cB.SelectedIndexChanged = process_CB_File;
   this.Controls.Add(cB);
}
private void process_CB_File(object sender, EventArgs e){
    ComboBox c = sender as ComboBox;
    if(c.SelectedIndex>0){
        string fileURL = c.SelectedValue.ToString();
        //process file
    }
}  

答案 2 :(得分:0)

使用Dictionary
以下是如何通过value(组合框选定项目)提取key(链接)的示例。

  private string Example()
        {
            // could be called via button event / selectedIndexChange of event comboBox etc...
            if (Ht.ContainsKey(comboBox1.SelectedItem.ToString()))
                return Ht[comboBox1.SelectedItem.ToString()];
            else
                throw new Exception("Error: Dictionary has no key");
        }

简单示例(仅用于理解)初始化具有与组合框值并行的键的Dictionary:

    Dictionary<string, string> Ht;
    private void initHtAndCombo()
    {

        Ht = new Dictionary<string, string>();
        Ht.Add("index0ValueOfComboBox", "SomeLink1");
        Ht.Add("index1ValueOfComboBox", "SomeLink2");
        Ht.Add("index2ValueOfComboBox", "SomeLink3");
        Ht.Add("index3ValueOfComboBox", "SomeLink4");

        comboBox1.Items.Add("index0ValueOfComboBox");
        comboBox1.Items.Add("index1ValueOfComboBox");
        comboBox1.Items.Add("index2ValueOfComboBox");
        comboBox1.Items.Add("index3ValueOfComboBox");
    }

答案 3 :(得分:0)

我会创建一个List URLS,其中包含与combobox项目顺序相同的链接。然后使用combobox.SelectedIndex引用List项。例如:

"web_accessible_resources": ["*.jpg","*.JPG", "*.png", "*.PNG"]