Связать ComboBox со значениями словаря - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу вызвать 3 списка в цикле for с переменными и получить что-то вроде:

for (int i = 1; i <= 3; i++)
{
    Combobox MyList(i) = new Combobox();
    MyList(i).Width = 120;
    MyList(i).Height = 30;
    etc...
}

Это не может быть сделано таким образом, поэтому я искал другие способы и обнаружил, что это можетбыть сделано с помощью словаря.Но тогда я не могу заполнить списки со значениями (которые являются списками) моего словаря.

Я сделал что-то вроде этого:

namespace GenDet
{
    public partial class NewDetail : Page
    {
    int Nbe = 0;
    List<String> MyElements = new List<String>();
    List<String> MyElement1 = new List<String>();
    List<String> MyElement2 = new List<String>();
    List<String> MyElement3 = new List<String>();

    Dictionary<int, List<string>> MyDictionary = new Dictionary<int, List<string>>();

    public NewDetail()
    {
        InitializeComponent();
        MyDictionary.Add(1, MyElement1);
        MyDictionary.Add(2, MyElement2);
        MyDictionary.Add(3, MyElement3);
    }

    private void OnClick1(object sender, RoutedEventArgs e)
    {

        string MyValue = MyList.SelectedValue.ToString();
        if (Nbe == 3)
        {
            MessageBox.Show("Max elements reached", "Alert", MessageBoxButton.OK, MessageBoxImage.Information);
        } else
        {
            AddList(Nbe, MyValue, MyElements);
        }

    }
    private void AddList (int Nbe, string MyValue, List<string> MyElements)
    {
        List<String> MyNewList = new List<String>();
        if (Nbe==0 || (MyElements[Nbe-1] != MyValue && (MyElements[Nbe-1] == "Mur" || MyValue == "Mur"))) 
        {
            //String MyListName = "MyNewList" + Nbe.ToString();
            MyElements.Add(MyValue);
            Nbe += 1;
        }
        for (int i = 1; i <= Nbe; i++)
        {
           //MyComboBox[i] = MyDictionary value for key = i;
        }
    }
}

}

1 Ответ

0 голосов
/ 30 ноября 2018

На самом деле это можно сделать так, как вы впервые написали, но:

1. Сначала создайте массив comboBox (ComboBox[])

2. Индексирование в C3 выполняется с помощью []а не ()

3. Индексы начинаются с 0, поэтому цикл от 0 до 2

ComboBox[] MyList = new ComboBox[3];
for (int i = 0; i < 3; i++)
{
    MyList[i] = new ComboBox();
    MyList[i].Width = 120;
    MyList[i].Height = 30;
    etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...