Как удалить кнопку после нажатия windows forms

I have a problem in my C# winform project. In my project I have function that make a new button at runtime. Because sometimes I make too many buttons I want to write a function that deletes the but...

I have a problem in my C# winform project.
In my project I have function that make a new button at runtime. Because sometimes I make too many buttons I want to write a function that deletes the button that I want to delete at run time.
Someone maybe have already that function?

private void button2_Click(object sender, EventArgs e)
{
        Button myText = new Button();
        myText.Tag = counter;
        myText.Location = new Point(x2,y2);
        myText.Text = Convert.ToString(textBox3.Text);
        this.Controls.Add(myText);
}

that is how I make the button at runtime.

Brian Tompsett - 汤莱恩's user avatar

asked Apr 21, 2012 at 19:17

user1348191's user avatar

2

In order to remove the last button you’ve added, you can use something like this:

//a list where you save all the buttons created
List<Button> buttonsAdded = new List<Button>();

private void button2_Click(object sender, EventArgs e)
{
    Button myText = new Button();
    myText.Tag = counter;
    myText.Location = new Point(x2,y2);
    myText.Text = Convert.ToString(textBox3.Text);
    this.Controls.Add(myText);
    //add reference of the button to the list
    buttonsAdded.Insert(0, myText);

}

//atach this to a button removing the other buttons
private void removingButton_Click(object sender, EventArgs e)
{
    if (buttonsAdded.Count > 0)
    {
        Button buttonToRemove = buttonsAdded[0];
        buttonsAdded.Remove(buttonToRemove);
        this.Controls.Remove(buttonToRemove);
    }
}

This should allow you to remove as many buttons as you want by removing always the last one added from the existing ones.

Update

If you want to be able to hover a button with your mouse cursor and then delete it with Delete key, you can use this solution:

  • set KeyPreview to true, so Form can receive key events occured in its controls
  • add buttonsAdded list and modify button2_Click as in the first solution described in this answer

  • create KeyDown event handler for your Form and add this code ot it:

    private void MySampleForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Delete)
        {
            //get control hovered with mouse
            Button buttonToRemove = (this.GetChildAtPoint(this.PointToClient(Cursor.Position)) as Button);
            //if it's a Button, remove it from the form
            if (buttonsAdded.Contains(buttonToRemove))
                {
                    buttonsAdded.Remove(buttonToRemove);
    
                    this.Controls.Remove(buttonToRemove);
                }
        }
    }
    

answered Apr 21, 2012 at 19:35

Lukasz M's user avatar

Lukasz MLukasz M

5,5752 gold badges22 silver badges29 bronze badges

9

you should be able to use this.Controls.Remove(myText);

answered Apr 21, 2012 at 19:20

CD Smith's user avatar

CD SmithCD Smith

6,5997 gold badges39 silver badges65 bronze badges

3

public Button myText ; // keep public button to assign your new Button 

private void buttonAdd_Click(object sender, EventArgs e)
{
        myText = new Button();
        myText.Tag = counter;
        myText.Location = new Point(x2,y2);
        myText.Text = Convert.ToString(textBox3.Text);
        this.Controls.Add(myText);
}

private void buttonRemove_Click(object sender, EventArgs e)
{
      if(Button != null && this.Controls.Contains(myText))
      {
           this.Controls.Remove(myText);
           myText.Dispose();
      )
}

if you want to remove on delete key press you can use key down event as below

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
          if(Button != null && this.Controls.Contains(myText))
          {
               this.Controls.Remove(myText);
               myText.Dispose();
          )
    }
}

answered Apr 21, 2012 at 19:31

Damith's user avatar

DamithDamith

61.8k13 gold badges101 silver badges153 bronze badges

1

0 / 0 / 0

Регистрация: 26.11.2010

Сообщений: 23

1

Удаление любой кнопки на форме

28.11.2010, 22:25. Показов 13200. Ответов 10


Подскажите, пожалуйста! Мне нужно на форме удалить нопку. Порядок действий таков: я нажимаю на определенную кнопку, потом выбираю какую кнопку нужно удалить. Как это сделать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



SSV

Заблокирован

28.11.2010, 22:55

2

Предлагаю тебе еще добавить СomboBox для выбора кнопки

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null)
                {
                    this.comboBox1.Items.AddRange(new object[] {
            btn.Name});
                }
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null)
                {
                    if (btn.Name == comboBox1.Text)
                        btn.Dispose();
                }
            } 
        }
    }

Добавлено через 3 минуты
а так еще лучше

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null)
                {
                    this.comboBox1.Items.AddRange(new object[] {
            btn.Name});
                }
            }
 
        }
 
       
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null)
                {
                    if (btn.Name == comboBox1.Text)
                        btn.Dispose();
                }
            } 
        }
    }



1



0 / 0 / 0

Регистрация: 26.11.2010

Сообщений: 23

28.11.2010, 22:58

 [ТС]

3

А если без комбобокса?



0



SSV

Заблокирован

28.11.2010, 23:27

4

Цитата
Сообщение от LQuatt
Посмотреть сообщение

А если без комбобокса?

А как ты интересно себе это представляешь?

Цитата
Сообщение от LQuatt
Посмотреть сообщение

потом выбираю какую кнопку нужно удалить

Где ты будешь выбирать?



1



burning1ife

1457 / 1279 / 293

Регистрация: 21.09.2008

Сообщений: 3,438

Записей в блоге: 9

29.11.2010, 00:10

5

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



1



SSV

Заблокирован

29.11.2010, 08:16

6

Без комбобокса

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void button1_Click(object sender, EventArgs e)
        {
            Form f2 = new Form();
            f2.Text = "Для удаления жми на метку";
            int _x = 10;
            int _y = 10;
          
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null)                
                {
                    _y += 30;
                    Label lb = new Label();
                    lb.Font = new Font("Microsoft Sans Serif", 9.75F, ((FontStyle)((FontStyle.Bold | FontStyle.Italic)))
                        ,GraphicsUnit.Point, ((byte)(204)));
                    lb.Text = btn.Name;
                    lb.Location = new System.Drawing.Point(_x, _y);
                    lb.Click += (label_Click, arg) => { btn.Dispose(); lb.ForeColor = Color.Green; };                 
                    f2.Controls.Add(lb);
                    lb.Show();
                }
 
            }
            
            f2.ClientSize = new System.Drawing.Size(292, _y + 33);
            f2.Show();
        }



2



nio

6042 / 3451 / 335

Регистрация: 14.06.2009

Сообщений: 8,136

Записей в блоге: 2

29.11.2010, 11:46

7

Цитата
Сообщение от LQuatt
Посмотреть сообщение

Мне нужно на форме удалить нопку. Порядок действий таков: я нажимаю на определенную кнопку, потом выбираю какую кнопку нужно удалить.

все просто

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
bool deleteButton = false;
 
        private void button1_Click(object sender, EventArgs e)
        {
            deleteButton = !deleteButton;
        }
 
       
        private void button2_Click(object sender, EventArgs e)
        {
            if(deleteButton)
                ((Button)sender).Dispose();
        }

Обработчик второй кнопки прикрутить ко всем кнопкам, которые следует удалить. Первая кнопка меняет режим (удалять / неудалять), т.е. можно удалять кнопки до тех пор пока снова не будет нажата первая кнопка.



2



SSV

Заблокирован

29.11.2010, 13:40

8

Цитата
Сообщение от nio
Посмотреть сообщение

Обработчик второй кнопки прикрутить ко всем кнопкам, которые следует удалить.

Всё очень просто

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public Form1()
        {
            InitializeComponent();
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null && btn.Name != "button1")
                {
                    btn.Click += Button_Click;
                }
            } 
        }
        bool deleteButton = false;
        private void button1_Click(object sender, EventArgs e)
        {
            deleteButton = !deleteButton;
        }
 
        private void Button_Click(object sender, EventArgs e)
        {
            if (deleteButton)
                ((Button)sender).Dispose();
        }



1



6042 / 3451 / 335

Регистрация: 14.06.2009

Сообщений: 8,136

Записей в блоге: 2

29.11.2010, 13:49

9

именно так, без всяких комбобоксов и списков



0



SSV

Заблокирован

29.11.2010, 21:07

10

А вот так пожалуй получше будет

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool deleteButton = false;
        public Form1()
        {
            InitializeComponent();
 
            foreach (var control in this.Controls)
            {
                Button btn = control as Button;
                if (btn != null  )
                {
                    if (btn.Name == "button1")
                        btn.Click += (sender, e) => deleteButton = !deleteButton;
                    else btn.Click += (sender, e) =>
                    {
                        if (deleteButton)
                            ((Button)sender).Dispose();
                    };
                }
            } 
        }



2



0 / 0 / 0

Регистрация: 26.11.2010

Сообщений: 23

29.11.2010, 22:03

 [ТС]

11

Всем огромное спасибо!



0



You are still not saying which control you want to remove, what type of controls you want to remove or how you want to identify them.

You could just loop through the controls to remove specific Controls.

If you have Linq, its easy:

private void btn_Click(object sender, EventArgs e)
{
    panel1.Controls.Clear(); //to remove all controls


    //to remove all comboboxes
    foreach (Control item in panel1.Controls.OfType<ComboBox>().ToList())
    {
        panel1.Controls.Remove(item); 
    }


   //to remove control by Name
    foreach (Control item in panel1.Controls.OfType<Control>().ToList())
    {
        if (item.Name == "bloodyControl")
            panel1.Controls.Remove(item); 
    }

    
    //to remove just one control, no Linq
    foreach (Control item in panel1.Controls)
    {
        if (item.Name == "bloodyControl")
        {
             panel1.Controls.Remove(item);
             break; //important step
        }
    }
}

Edit:

Its easy to do the same since you’re tagging the control already. All you need is to just retrieve the control back from tag. But you need to tag appropriately:

Do this instead:

private void button1_Click(object sender, EventArgs e)
{
    int v;
    v = c++;
    panel1.VerticalScroll.Value = VerticalScroll.Minimum;

    Button btn = new Button();
    btn.Name = "btn" + v;
    btn.Text = "Remove";
    btn.Location = new Point(750, 5 + (30 * v));
    btn.Click += new EventHandler(btn_Click);
    
    ComboBox combo = new ComboBox();
    combo.Name = "combobox" + v ;
    combo.Location = new Point(30, 5 + (30 * v));
    combo.Tag = btn;

    ComboBox combo2 = new ComboBox();
    combo2.Name = "combobox2" + v ;
    combo2.Location = new Point(170, 5 + (30 * v));
    combo2.Tag = btn;

    TextBox txt = new TextBox();
    txt.Name = "txtbx" + v;
    txt.Location = new Point(300, 5 + (30 * v));
    txt.Tag = btn;

    TextBox txt2 = new TextBox();
    txt2.Name = "txtbx2" + v;
    txt2.Location = new Point(450, 5 + (30 * v));
    txt2.Tag = btn;

    TextBox txt3 = new TextBox();
    txt3.Name = "txtbx3" + v;
    txt3.Location = new Point(600, 5 + (30 * v));
    txt3.Tag = btn;

    panel1.Controls.Add(combo);
    panel1.Controls.Add(btn);
    panel1.Controls.Add(txt);
    panel1.Controls.Add(combo2);
    panel1.Controls.Add(txt2);
    panel1.Controls.Add(txt3);    
}

private void btn_Click(object sender, EventArgs e)
{
   //to remove control by Name
    foreach (Control item in panel1.Controls.OfType<Control>().ToList())
    {
        if (item.Tag == sender || item == sender)
            panel1.Controls.Remove(item); 
    }
}

Here you are tagging controls with the button, hence on the button click you can remove all the controls whose tags are the clicked button which you get from sender argument. But the downside of this approach is that you have to enumerate all the controls of the panel which is not great.

Edit: As I came to learn the below code is for a table layout panel which the OP isn’t using for now. But anyway a table panel layout is better suited for this job.

I would suggest you to do this:

private void button1_Click(object sender, EventArgs e)
{
    int v;
    v = c++;
    panel1.VerticalScroll.Value = VerticalScroll.Minimum;

    Button btn = new Button();
    btn.Name = "btn" + v;
    btn.Text = "Remove";
    btn.Location = new Point(750, 5 + (30 * v));
    btn.Click += new EventHandler(btn_Click);
    btn.Tag = v;

    ComboBox combo = new ComboBox();
    combo.Name = "combobox" + v ;
    combo.Location = new Point(30, 5 + (30 * v));
    combo.Tag = v;

    ComboBox combo2 = new ComboBox();
    combo2.Name = "combobox2" + v ;
    combo2.Location = new Point(170, 5 + (30 * v));
    combo2.Tag = v;

    TextBox txt = new TextBox();
    txt.Name = "txtbx" + v;
    txt.Location = new Point(300, 5 + (30 * v));
    txt.Tag = v;

    TextBox txt2 = new TextBox();
    txt2.Name = "txtbx2" + v;
    txt2.Location = new Point(450, 5 + (30 * v));
    txt2.Tag = v;

    TextBox txt3 = new TextBox();
    txt3.Name = "txtbx3" + v;
    txt3.Location = new Point(600, 5 + (30 * v));
    txt3.Tag = v;

    panel1.Controls.Add(combo);
    panel1.Controls.Add(btn);
    panel1.Controls.Add(txt);
    panel1.Controls.Add(combo2);
    panel1.Controls.Add(txt2);
    panel1.Controls.Add(txt3);    
}

private void btn_Click(object sender, EventArgs e)
{
    int toBeDeletedRow = (int)((Control)sender).Tag;
    for (int row = panel1.RowCount - 1; row >= 0; row--)
    {
        if (row == toBeDeletedRow)
        {
            panel1.RowStyles.RemoveAt(row);
            panel1.RowCount--;
            return;
        }
    }
}

You are still not saying which control you want to remove, what type of controls you want to remove or how you want to identify them.

You could just loop through the controls to remove specific Controls.

If you have Linq, its easy:

private void btn_Click(object sender, EventArgs e)
{
    panel1.Controls.Clear(); //to remove all controls


    //to remove all comboboxes
    foreach (Control item in panel1.Controls.OfType<ComboBox>().ToList())
    {
        panel1.Controls.Remove(item); 
    }


   //to remove control by Name
    foreach (Control item in panel1.Controls.OfType<Control>().ToList())
    {
        if (item.Name == "bloodyControl")
            panel1.Controls.Remove(item); 
    }

    
    //to remove just one control, no Linq
    foreach (Control item in panel1.Controls)
    {
        if (item.Name == "bloodyControl")
        {
             panel1.Controls.Remove(item);
             break; //important step
        }
    }
}

Edit:

Its easy to do the same since you’re tagging the control already. All you need is to just retrieve the control back from tag. But you need to tag appropriately:

Do this instead:

private void button1_Click(object sender, EventArgs e)
{
    int v;
    v = c++;
    panel1.VerticalScroll.Value = VerticalScroll.Minimum;

    Button btn = new Button();
    btn.Name = "btn" + v;
    btn.Text = "Remove";
    btn.Location = new Point(750, 5 + (30 * v));
    btn.Click += new EventHandler(btn_Click);
    
    ComboBox combo = new ComboBox();
    combo.Name = "combobox" + v ;
    combo.Location = new Point(30, 5 + (30 * v));
    combo.Tag = btn;

    ComboBox combo2 = new ComboBox();
    combo2.Name = "combobox2" + v ;
    combo2.Location = new Point(170, 5 + (30 * v));
    combo2.Tag = btn;

    TextBox txt = new TextBox();
    txt.Name = "txtbx" + v;
    txt.Location = new Point(300, 5 + (30 * v));
    txt.Tag = btn;

    TextBox txt2 = new TextBox();
    txt2.Name = "txtbx2" + v;
    txt2.Location = new Point(450, 5 + (30 * v));
    txt2.Tag = btn;

    TextBox txt3 = new TextBox();
    txt3.Name = "txtbx3" + v;
    txt3.Location = new Point(600, 5 + (30 * v));
    txt3.Tag = btn;

    panel1.Controls.Add(combo);
    panel1.Controls.Add(btn);
    panel1.Controls.Add(txt);
    panel1.Controls.Add(combo2);
    panel1.Controls.Add(txt2);
    panel1.Controls.Add(txt3);    
}

private void btn_Click(object sender, EventArgs e)
{
   //to remove control by Name
    foreach (Control item in panel1.Controls.OfType<Control>().ToList())
    {
        if (item.Tag == sender || item == sender)
            panel1.Controls.Remove(item); 
    }
}

Here you are tagging controls with the button, hence on the button click you can remove all the controls whose tags are the clicked button which you get from sender argument. But the downside of this approach is that you have to enumerate all the controls of the panel which is not great.

Edit: As I came to learn the below code is for a table layout panel which the OP isn’t using for now. But anyway a table panel layout is better suited for this job.

I would suggest you to do this:

private void button1_Click(object sender, EventArgs e)
{
    int v;
    v = c++;
    panel1.VerticalScroll.Value = VerticalScroll.Minimum;

    Button btn = new Button();
    btn.Name = "btn" + v;
    btn.Text = "Remove";
    btn.Location = new Point(750, 5 + (30 * v));
    btn.Click += new EventHandler(btn_Click);
    btn.Tag = v;

    ComboBox combo = new ComboBox();
    combo.Name = "combobox" + v ;
    combo.Location = new Point(30, 5 + (30 * v));
    combo.Tag = v;

    ComboBox combo2 = new ComboBox();
    combo2.Name = "combobox2" + v ;
    combo2.Location = new Point(170, 5 + (30 * v));
    combo2.Tag = v;

    TextBox txt = new TextBox();
    txt.Name = "txtbx" + v;
    txt.Location = new Point(300, 5 + (30 * v));
    txt.Tag = v;

    TextBox txt2 = new TextBox();
    txt2.Name = "txtbx2" + v;
    txt2.Location = new Point(450, 5 + (30 * v));
    txt2.Tag = v;

    TextBox txt3 = new TextBox();
    txt3.Name = "txtbx3" + v;
    txt3.Location = new Point(600, 5 + (30 * v));
    txt3.Tag = v;

    panel1.Controls.Add(combo);
    panel1.Controls.Add(btn);
    panel1.Controls.Add(txt);
    panel1.Controls.Add(combo2);
    panel1.Controls.Add(txt2);
    panel1.Controls.Add(txt3);    
}

private void btn_Click(object sender, EventArgs e)
{
    int toBeDeletedRow = (int)((Control)sender).Tag;
    for (int row = panel1.RowCount - 1; row >= 0; row--)
    {
        if (row == toBeDeletedRow)
        {
            panel1.RowStyles.RemoveAt(row);
            panel1.RowCount--;
            return;
        }
    }
}

  • Remove From My Forums
  • Question

  • hello, how can I delete a button without damaging the program? (Just delete the code or just so delete button?) Beyond that how and when you select a button that can block others?

Answers

  • Hi,

    If you want to completely remove the Button, you can try this:

    First:In Form1.cs[Design] delete the button1

    Second:In Form1.Designer.cs delete the Windows Form Designer generated code about Button

    Finally:In Form1.cs, delete the code about button’s event.Like:

     private void button1_Click(object sender, EventArgs e)
            {
                //......
            }

    Thanks.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    Click
    HERE to participate the survey.

    • Edited by

      Friday, December 13, 2013 8:19 AM

    • Marked as answer by
      Eason_H
      Friday, December 20, 2013 5:04 AM

  • Remove From My Forums
  • Question

  • hello, how can I delete a button without damaging the program? (Just delete the code or just so delete button?) Beyond that how and when you select a button that can block others?

Answers

  • Hi,

    If you want to completely remove the Button, you can try this:

    First:In Form1.cs[Design] delete the button1

    Second:In Form1.Designer.cs delete the Windows Form Designer generated code about Button

    Finally:In Form1.cs, delete the code about button’s event.Like:

     private void button1_Click(object sender, EventArgs e)
            {
                //......
            }

    Thanks.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    Click
    HERE to participate the survey.

    • Edited by

      Friday, December 13, 2013 8:19 AM

    • Marked as answer by
      Eason_H
      Friday, December 20, 2013 5:04 AM

Содержание

  1. Как убрать кнопку с верхней панели окна
  2. Динамическое удаление элементов с формы
  3. Удаление элементов формы
  4. Windows Forms: как скрыть кнопку Закрыть (x)?
  5. 8 ответов
  6. Кнопка «Удалить форму» Windows Forms

Как убрать кнопку с верхней панели окна

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Убрать кнопку окна с Панели задач и скрыть его рамку
Как можно одновременно убрать кнопку окна с Панели задач и скрыть рамку этого окна? Если я создаю.

tickУбрать лишние кнопки в верхней панели формы
Добрый день, мне нужно убрать с верхней панели формы кнопку «Закрыть» и кнопку «Во весь экран», но.

Как убрать кнопку развернуть в заголовке окна
Как убрать кнопку развернуть в заголовке окна?

так выставь эти свойства в true и будет тебе счастье

Добавлено через 37 секунд
а false убрать их

Добавлено через 1 минуту 17 секунд
хм.. он просто неактивно теперь

Вообще-то это делается в инспекторе, но уж ладно:

Как сделать форму без верхней панели?
Как сделать форму без верхней панели? Наследование от Window не подхоит, так как.

Убрать кнопку закрытия окна
Доброго времени суток бойцы. Подскажите как сделать следующие, хочу в окне изменить верхнею строку.

Убрать кнопку закрытия окна
Формы в VBA на них всех в правом верхнем углу есть кнопка закрытия окна (красный крестик) как то.

Как убрать кнопку «разворачивания» у окна?
Здравствуйте. Вопрос собственно в заголовке) Как убрать у окна кнопку его разворачивания.

tickВысота от верхней границы элемента до верхней границы видимого клиентского окна
Здравствуйте, такой вопрос, как высчитать количество пикселей допустим от верхней границы элемента.

Источник

Динамическое удаление элементов с формы

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Динамическое удаление элементов
Не уверен, что корректно использую понятие «элементы», но в данном случае речь идет о Button и.

Динамическое создание и удаление элементов управления
В конструкторе есть комбобокс, нужно отображать n-ое кол-во textbox и label, в зависимости от.

Динамическое создание элементов формы
Подскажите, пожалуйста вот этот код Label nbomb = new Label(); nbomb.Name = «bomb» + bcount;.

динамическое удаление формы
Здравствуйте! В интернете нашел пример как динамически создать форму procedure.

Возможно проблема в том, что вы делаете данную операцию с tabControl1, где можно добавлять и удалять только tabPage

Вложения

rar WindowsFormsApplication4.rar (23.6 Кб, 93 просмотров)

Динамическое добавление и удаление компонентов с формы
Нужно написать программу, в рабочую область которой можно было бы помещать графические примитивы и.

Динамическое удаление элементов
Здравствуйте. При удалении элементов в цикле столкнулся с такой проблемой: при удалении элемента.

tickДинамическое добавление/удаление элементов
Здравствуйте! Нужна помощь. Я начинающий программист, грубо говоря, нуб. У меня вопрос следующий.

Динамическое создание и удаление элементов
Есть форма по которой можно перемещать изображения которые описываются и создаются с помощью.

Источник

Удаление элементов формы

Динамическое удаление элементов с формы
Подскажите, как можно динамически (по нажатию кнопки) удалить с формы элементы управления? Функция.

Удаление элементов с формы
Всем привет Есть несколько динамических lebel’ов на форме, подскажите как удалить их, для новой.

Удаление записи из формы по команде с другой формы VBA
Здравствуйте! Подскажите пожалуйста, по коду. немного переделал функционал в одной из форм. Была.

Ладно бы 10 панелей надо было удалять.

Добавлено через 57 секунд
ну а вообще к контролу можно обращаться по ему имени:

Добавление элементов к дереву, удаление элементов и поиск уровня с наибольшей суммой элементов
Помогите пожалуйста! нужно разработать программу для работы с деревом. В узлах дерева содержатся.

Как изменять размеры элементов формы при изменении самой формы
Есть форма, когда изменяется её размер нужно чтобы все элементы изменялись пропорционально вместе с.

tickДизайнер формы неправильно определяет свойства элементов самой формы
Здравствуйте. Столкнулся с такой проблемой: установил на форме элемент DataGridView и с ним в файле.

Удаление формы
Доброго времени суток. Я удалил форму. Но после этого при компиляции появляется ошибка: неправильно.

Источник

Windows Forms: как скрыть кнопку Закрыть (x)?

Мне нужно скрыть только кнопку Закрыть, есть ли способ сделать это?

Update: у меня было разрешение отключить его, что проще 🙂 спасибо всем!

8 ответов

вы не можете скрыть его, но вы можете отключить его, переопределив свойство CreateParams формы.

мы можем скрыть кнопку «закрыть» на форме настройки this.ControlBox=false;

Ну, вы можете скрыть его, удалив все системное меню:

конечно, это удаляет кнопки минимизации и максимизации.

Если вы сохраняете системное меню, но удаляете пункт Закрыть, кнопка Закрыть остается, но отключена.

окончательная альтернатива-нарисовать не клиентскую область самостоятельно. Это довольно трудно понять.

Если вы действительно хотите скрыть его, как в «не видно», то вам, вероятно, придется создать форму без границ и нарисовать компоненты заголовка самостоятельно. Библиотека VisualStyles имеет доступные элементы Windows. Вам также придется добавить обратно в функциональность изменения размера формы или перемещения формы, схватив панель заголовка. Не говоря уже о меню в углу.

в большинстве случаев трудно оправдать, что кнопка» Закрыть » недоступна, особенно когда вам нужна модальная форма с минимизирующими возможностями. Минимизация модальной формы действительно не имеет смысла.

вы можете скрыть закройте окно с помощью

и не забудьте добавить пробел в this.Text = » » чтобы сделать это так

f3abb9ff605208b838314979043f9bbd

в свойствах вашей формы установите «Control Box» = False, но он также скроет минимизированный и Максимизированный.

Ну, вы можете скрыть кнопку закрытия, изменив FormBorderStyle из раздела свойств или программно в конструкторе, используя:

затем вы создаете пункт полосы меню для выхода из приложения.

если это опция, вы можете установить

затем воссоздайте кнопки минимизации и максимизации

Источник

Кнопка «Удалить форму» Windows Forms

Лучше всего заключить событие FormClosing формы, подобное этому, и отменить действие закрытия:

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

Очевидно, вы не хотите, чтобы ВСЕГДА отменили форму от закрытия. Поэтому вы захотите установить некоторый тип логического флага, который вы проверите в прослушивателе событий, о том, хотите ли вы, чтобы форма была разрешена для закрытия или нет. Пример:

EDIT: Если вы не хотите так подойти к проблеме, и вы действительно намерены полностью удалить кнопку закрытия, то лучше всего создать свою собственную панель заголовков. В этом случае вы устанавливаете для свойства FormBorderStyle значение None. Затем вы прикрепляете свою настраиваемую строку заголовка к верхней части формы. Вот пример кода, который я сделал некоторое время назад:

2c7f861da2937c68b885b3d2e1660d0c

Как вы можете видеть из изображения, я также добавил фоновое изображение к элементу управления. В зависимости от вашего терпения и ваших требований вы можете использовать образы и элементы управления PictureBox, чтобы это выглядело так же, как стандартная строка заголовка по мере необходимости.

В приведенном выше примере я разместил три кнопки на элементе управления с изображениями, которые я нашел в Интернете, чтобы представить минимизацию, максимизацию и закрытие. в вашем случае вы просто исключили бы кнопку закрытия. Я также поместил строку в элемент управления с соответствующим шрифтом, который будет использоваться в качестве названия окна.

Добавление настраиваемой строки заголовка в вашу форму легко.

Вы также можете отметить, что я включил события для мыши вниз, вверх и переместился в свою строку заголовка. Это было так, что я мог создавать слушателей в своей форме, чтобы переместить форму, когда пользователь щелкнул мышью и перетащил строку заголовка. Это необязательно и зависит от того, нужен ли пользователь для перемещения вашего окна приложения.

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

Источник

Понравилась статья? Поделить с друзьями:
  • Как удалить карты в windows 10 навсегда через powershell
  • Как удалить кнопку выключения windows 10
  • Как удалить картинку учетной записи windows 10
  • Как удалить кмс активатор windows 10
  • Как удалить картинку с экрана блокировки в windows 10