Динамически созданное поле со списком SelectedIndexChanged не добавляет элементы управления - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь сделать так, чтобы панель отображала результат по-разному каждый раз, когда пользователь выбирает элементы из предварительно загруженного поля со списком и динамически созданного поля со списком.

Первоначально он загружает поле со списком с элементом ("HelloWorld") , каждый раз, когда я выполняю SelectedIndexChanged с «HelloWorld», на панели отображается 1.

Однако проблема возникает всякий раз, когда я нажимаю кнопку добавления и выполняю SelectedIndexChanged с «HelloWorld» на вновь созданной кнопке. Он просто не показывает 2, но вместо этого, когда я нажимаю на предварительно загруженный comboBox, он показывает 3.

Это как-то связано с событиями жизненного цикла?

class form{
 int index = 0;
 private void formMain_Load(object sender, EventArgs e)
    {
        Button add = new Button();
        panel.Controls.Add(search());
        add.Click += new EventHandler((object o, EventArgs e) => { panel.Controls.Add(search()); });
        panel.Controls.Add(add);
    }
    
    public ComboBox search()
    {
        ComboBox searchField = new ComboBox();
        searchField.Items.Add("HelloWorld");
    
        searchField.SelectedIndexChanged += new EventHandler((object io, EventArgs ie) =>
        {
            index++;
            Label display = new Label();
            display.Text = index.ToString();
            panel.Controls.Add(display);
        });

      return searchField;
    }
}
   

У меня есть много дней пробовал и не мог понять ... Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 10 июля 2020
int index { get; set; }
    public Form2()
    {
        InitializeComponent();
        index = 0;
        Button add = new Button();
        add.Text = "Add";
        add.Location = new Point(search().Location.X + search().Width + 10, search().Location.Y);
        panel.Controls.Add(search());
        add.Click += new EventHandler((object o, EventArgs e) => {
        panel.Controls.Add(search()); 
        });

        panel.Controls.Add(add);
    }
    public ComboBox search()
    {
        ComboBox searchField = new ComboBox();
        searchField.Items.Add("HelloWorld");
        searchField.Name = "cmb " + index.ToString();
        searchField.Location = new Point(10, (index + 1) * 20);
       
        searchField.SelectedIndexChanged += new EventHandler((object io, EventArgs ie) =>
        {
            index++;
            Label display = new Label();
            display.Location = new Point(250, search().Location.Y-12);
            panel.Controls.Add(display);
            display.Text = index.ToString();
        });

        return searchField;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...