Удалить 2 динамические кнопки из одной динамической кнопки - PullRequest
0 голосов
/ 30 ноября 2018

Итак, у меня есть Карта изображений, и на ней я хочу отображать 3 кнопки каждый раз, когда я нажимаю на местоположение.Эти 3 кнопки будут: горячая точка, удалить горячую точку, сохранить горячую точку.Эти кнопки генерируются динамически.Вопрос в том, как я могу открыть горячую точку из кнопки «Удалить горячую точку», а также закрыть две другие кнопки.

Некоторый код для небольшого понимания того, что я делаю:

private void PictureBox1_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            //Locatia
            PictureBox C = new PictureBox();
            int i = 0;
            C.Location = new Point(e.X-13, e.Y-30);
            C.Name = "Problema_" + (i + 1).ToString();
            C.ImageLocation = @"C:\Users\Starrux\Pictures\PNGs\Planner\icons8_GPS_500px.png";
            C.Size = new Size(26, 30);
            C.SizeMode = PictureBoxSizeMode.StretchImage;
            C.BackColor = Color.Transparent;
            C.Cursor = Cursors.Hand;
            // C.Click += new EventHandler(this.StartRecordingToolStripMenuItem_Click_1);;
            PictureBox1.Controls.Add(C);

            //salveaza Locatia
            PictureBox S = new PictureBox();
            S.Name = "Salveaza_" + (i + 1).ToString();
            S.Location = new Point(e.X - 45, e.Y+10);
            S.ImageLocation = @"C:\Users\Starrux\Pictures\PNGs\Planner\icons8_Checked_Checkbox_500px.png";
            S.Size = new Size(35, 35);
            S.SizeMode = PictureBoxSizeMode.StretchImage;
            S.BackColor = Color.Transparent;
            S.Cursor = Cursors.Hand;
            PictureBox1.Controls.Add(S);

            //sterge Locatia
            PictureBox St = new PictureBox();
            St.Name = "Sterge_" + (i + 1).ToString();
            St.Location = new Point(e.X +10, e.Y+10);
            St.Cursor = Cursors.Hand;
            St.ImageLocation = @"C:\Users\Starrux\Pictures\PNGs\Planner\icons8_Close_Window_500px.png";
            St.Size = new Size(35, 35);
            St.SizeMode = PictureBoxSizeMode.StretchImage;
            St.BackColor = Color.Transparent;
            PictureBox1.Controls.Add(St);

            S.Click += new EventHandler(this.stergeAprob);
            C.Click += new EventHandler(this.clickHotspot);

        }

1 Ответ

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

Решением может быть то, что при динамическом создании вы также удаляете его динамически, используя анонимные функции

S.Click += (o, e) => {
     //....actions
     PictureBox1.Controls.remove(C)
     //... other actions
}

, мы можем иметь доступ к динамически создаваемым переменным, поскольку компилятор создает встроенные функции

...