选择ComboBox选项并下载文件

本文关键字:下载 文件 选项 ComboBox 选择 | 更新日期: 2023-09-27 18:06:18

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

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

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

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

选择ComboBox选项并下载文件

通过声明一个新的类并使用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());
        }
    }
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
    }
}  

使用字典
下面是一个如何通过key(组合框选定项)提取value(链接)的示例。

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

我将创建一个包含与组合框项相同顺序的链接的List URLS。然后使用组合框。selecteindex引用列表项。例子:

    List<string> URLS = new List<string>(); //fill this list with your URLs in order of combobox options
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Download(comboBox1.SelectedIndex);
    }
    private void Download(int LinkIndex)
    {
        string Download_Link = URLS[LinkIndex];
    }