Не получается динамически порождать на окне кнопки или метки

Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента управления определяется местоположением курсора при щелчке. При нажатии правой кнопки мыши на форме с нее удаляются все кнопки.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

namespace laba5
{
    public partial class Form1 : Form
    {
        

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {



        }

        private void Form1_MouseClick(object sender, MouseEventArgs e) 
        {
            Random rnd = new Random();
            if (e.Button == MouseButtons.Left)
            {
                Label label = new Label();
                label.Location = e.Location;
                label.Size = new Size(rnd.Next(150, 200), rnd.Next(150, 200));
                Button button = new Button();
                button.Location = e.Location;
                button.Size = new Size(rnd.Next(50, 100), rnd.Next(50, 100));
               
            }
            else if (e.Button == MouseButtons.Right)
            {
                Controls.Clear();
            }
        }

        private void btn_Click(object sender, EventArgs e)
        {
            MessageBox.Show((sender as Button).Text);
        }
    }


    
}

Вроде написал все по учебнику, а при запуске не работает, что правая, что левая кнопка


Ответы (1 шт):

Автор решения: mysp4ce

Ну, как минимум Вы их просто не добавляете.

Для того, что бы добавить контрол на форму, необходимо было сделать

this.Controls.Add(имя_контрола);

Второй момент, даже если Вы добавите этот код, label не будет отображаться, т.к. вы не задали ему текст (он будет в списке контролов, но визуально его не будет видно).

label.Text = "текст";

Ну и последний момент - великоваты размеры label, он "перекрывает" кнопку. Логики зачем Вам такое нужно я не понимаю, если нужно задать текст кнопке - используйте свойство Text.

+- рабочий итог:

            if (e.Button == MouseButtons.Left)
            {
                Label label = new Label();
                label.Location = e.Location;
                label.Size = new Size(rnd.Next(50, 50), rnd.Next(50, 50));
                label.Text = "1231231";
                Button button = new Button();
                button.Location = e.Location;
                button.Size = new Size(rnd.Next(50, 100), rnd.Next(50, 100));
                this.Controls.Add(label);
                this.Controls.Add(button);
            }
→ Ссылка