Как я могу удалить предыдущие кнопки после нажатия на другую? - PullRequest
0 голосов
/ 29 апреля 2020

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

Как я могу это сделать? Выглядит довольно просто, но добиться этого было действительно сложно. Код компилируется, когда я нажимаю кнопку, появляются другие, но я не могу удалить их или сделать их невидимыми. Как я могу это сделать? Заранее спасибо!

//Creates buttons on stage one

        for (int i = 0; i < 2; i++)
        {
            Button button = new Button();
            button.Location = new Point(20, 30 * i + 10);
            button.Visible = true;
            button.Text = "stage1";

            switch (i)
            {
                case 0:
                    button.Click += new EventHandler(ButtonClick);
                    break;
                case 1:
                    button.Click += new EventHandler(ButtonClick2);
                    break;
            }

            this.Controls.Add(button);
        }
    }

    void ButtonClick(object sender, EventArgs e)
    {
        // First Button Clicked
        // Creates buttons on stage 2

        for (int i = 0; i < 2; i++)
        {
            Button button = new Button();
            button.Location = new Point(200, 30 * i + 10);
            button.Visible = true;
            button.Text = "stage2";

            switch (i)
            {
                case 0:
                    button.Click += new EventHandler(ButtonClick3);
                    break;
                case 1:
                    button.Click += new EventHandler(ButtonClick4);
                    break;
            }
            this.Controls.Add(button);
        }
    }
    void ButtonClick2(object sender, EventArgs e)
    {
        // Second Button Clicked
    }

    void ButtonClick3(object sender, EventArgs e)
    {
        // Third Button Clicked
    }

    void ButtonClick4(object sender, EventArgs e)
    {
        // Fourth Button Clicked
    }

Visual Representation of the buttons

1 Ответ

0 голосов
/ 29 апреля 2020

Вы должны дать своим кнопкам уникальное имя:

button.Name = "button1";

Затем вы можете удалить их позже:

this.Controls.Remove((Button)Controls["button1"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...