Arhn - архитектура программирования

Выберите вариант ComboBox и загрузите файл

У меня есть ComboBox с 30 вариантами. Идентификатор хочет, чтобы программа знала, какой вариант был выбран и какую ссылку для загрузки использовать для этого варианта. Я могу использовать операторы if else, но с 30 вариантами, которые кажутся невероятно ненужными.

Если вариант 1, то ссылка для скачивания 1. иначе, если вариант 2, то ссылка на скачивание 2 .. и т. Д. И т. Д.

Это кажется слишком большой проблемой. Есть ли лучший способ указать, когда выбран вариант, использовать соответствующее значение загрузки?

Я хотел бы каким-то образом сохранить значение (URL-адрес) каждого параметра поля со списком (отображаемый текст), а затем использовать значение выбранных элементов, когда мне нужно вызвать ссылку URL-адреса. Я не уверен, как и можно ли это сделать с помощью форм Windows в Visual Studio.

08.09.2016

  • Сохраните значение параметра как ссылку, которую хотите загрузить, а затем просто прочтите значение поля со списком. 08.09.2016
  • Использовать словарь? Это поле со списком в asp.net. wpf или winforms? 08.09.2016
  • Я использую winforms 08.09.2016
  • При создании ComboBox загрузите его с Text = NameOfFile, Value = FileURL, затем добавьте событие SelectedIndexChanged и прочтите Value, чтобы получить URL-адрес файла для обработки. 08.09.2016
  • похоже, вы могли бы сделать это на чистом javascript. 08.09.2016
  • @jeremy Holovacs его winforms нет javascript. 09.09.2016
  • Будет ли мне проще каким-то образом сохранить значение (URL-адрес) каждого параметра поля со списком (отображаемый текст), а затем использовать значение выбранных элементов, когда мне нужно вызвать ссылку URL-адреса? Я не уверен, как и можно ли это сделать с помощью форумов Windows в Visual Studio. 09.09.2016

Ответы:


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

    }
08.09.2016
  • Будет ли мне проще каким-то образом сохранить значение (URL-адрес) каждого параметра поля со списком (отображаемый текст), а затем использовать значение выбранных элементов, когда мне нужно вызвать ссылку URL-адреса? Я не уверен, как и можно ли это сделать. 09.09.2016
  • Вот еще один полезный ответ, адаптированный для ваших нужд. 09.09.2016

  • 2

    Используйте Словарь.
    здесь это пример того, как извлечь 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, который имеет ключи, параллельные значениям combobox:

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

    3

    Я бы создал список URL-адресов, содержащий ссылки в том же порядке, что и элементы поля со списком. Затем используйте combobox.SelectedIndex для ссылки на элемент списка. Пример:

        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];
        }
    
    09.09.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..