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.
asked Apr 21, 2012 at 19:17
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, soForm
can receive key events occured in its controls -
add
buttonsAdded
list and modifybutton2_Click
as in the first solution described in this answer -
create
KeyDown
event handler for yourForm
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 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 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
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 |
Заблокирован |
||||||||
28.11.2010, 22:55 |
2 |
|||||||
Предлагаю тебе еще добавить СomboBox для выбора кнопки
Добавлено через 3 минуты
1 |
0 / 0 / 0 Регистрация: 26.11.2010 Сообщений: 23 |
|
28.11.2010, 22:58 [ТС] |
3 |
А если без комбобокса?
0 |
Заблокирован |
|
28.11.2010, 23:27 |
4 |
А если без комбобокса? А как ты интересно себе это представляешь?
потом выбираю какую кнопку нужно удалить Где ты будешь выбирать?
1 |
burning1ife 1457 / 1279 / 293 Регистрация: 21.09.2008 Сообщений: 3,438 Записей в блоге: 9 |
|
29.11.2010, 00:10 |
5 |
а если без комбокса, то как вариант те же ссылки на кнопки заносить в ListView, но мне кажется что идея с комбобоксом лучше всего
1 |
Заблокирован |
||||
29.11.2010, 08:16 |
6 |
|||
Без комбобокса
2 |
nio 6042 / 3451 / 335 Регистрация: 14.06.2009 Сообщений: 8,136 Записей в блоге: 2 |
||||
29.11.2010, 11:46 |
7 |
|||
Мне нужно на форме удалить нопку. Порядок действий таков: я нажимаю на определенную кнопку, потом выбираю какую кнопку нужно удалить. все просто
Обработчик второй кнопки прикрутить ко всем кнопкам, которые следует удалить. Первая кнопка меняет режим (удалять / неудалять), т.е. можно удалять кнопки до тех пор пока снова не будет нажата первая кнопка.
2 |
Заблокирован |
||||
29.11.2010, 13:40 |
8 |
|||
Обработчик второй кнопки прикрутить ко всем кнопкам, которые следует удалить. Всё очень просто
1 |
6042 / 3451 / 335 Регистрация: 14.06.2009 Сообщений: 8,136 Записей в блоге: 2 |
|
29.11.2010, 13:49 |
9 |
именно так, без всяких комбобоксов и списков
0 |
Заблокирован |
||||
29.11.2010, 21:07 |
10 |
|||
А вот так пожалуй получше будет
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
-
Edited by
- 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
-
Edited by
Содержание
- Как убрать кнопку с верхней панели окна
- Динамическое удаление элементов с формы
- Удаление элементов формы
- Windows Forms: как скрыть кнопку Закрыть (x)?
- 8 ответов
- Кнопка «Удалить форму» Windows Forms
Как убрать кнопку с верхней панели окна
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Убрать кнопку окна с Панели задач и скрыть его рамку
Как можно одновременно убрать кнопку окна с Панели задач и скрыть рамку этого окна? Если я создаю.
Убрать лишние кнопки в верхней панели формы
Добрый день, мне нужно убрать с верхней панели формы кнопку «Закрыть» и кнопку «Во весь экран», но.
Как убрать кнопку развернуть в заголовке окна
Как убрать кнопку развернуть в заголовке окна?
так выставь эти свойства в true и будет тебе счастье
Добавлено через 37 секунд
а false убрать их
Добавлено через 1 минуту 17 секунд
хм.. он просто неактивно теперь
Вообще-то это делается в инспекторе, но уж ладно:
Как сделать форму без верхней панели?
Как сделать форму без верхней панели? Наследование от Window не подхоит, так как.
Убрать кнопку закрытия окна
Доброго времени суток бойцы. Подскажите как сделать следующие, хочу в окне изменить верхнею строку.
Убрать кнопку закрытия окна
Формы в VBA на них всех в правом верхнем углу есть кнопка закрытия окна (красный крестик) как то.
Как убрать кнопку «разворачивания» у окна?
Здравствуйте. Вопрос собственно в заголовке) Как убрать у окна кнопку его разворачивания.
Высота от верхней границы элемента до верхней границы видимого клиентского окна
Здравствуйте, такой вопрос, как высчитать количество пикселей допустим от верхней границы элемента.
Источник
Динамическое удаление элементов с формы
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Динамическое удаление элементов
Не уверен, что корректно использую понятие «элементы», но в данном случае речь идет о Button и.
Динамическое создание и удаление элементов управления
В конструкторе есть комбобокс, нужно отображать n-ое кол-во textbox и label, в зависимости от.
Динамическое создание элементов формы
Подскажите, пожалуйста вот этот код Label nbomb = new Label(); nbomb.Name = «bomb» + bcount;.
динамическое удаление формы
Здравствуйте! В интернете нашел пример как динамически создать форму procedure.
Возможно проблема в том, что вы делаете данную операцию с tabControl1, где можно добавлять и удалять только tabPage
Вложения
WindowsFormsApplication4.rar (23.6 Кб, 93 просмотров) |
Динамическое добавление и удаление компонентов с формы
Нужно написать программу, в рабочую область которой можно было бы помещать графические примитивы и.
Динамическое удаление элементов
Здравствуйте. При удалении элементов в цикле столкнулся с такой проблемой: при удалении элемента.
Динамическое добавление/удаление элементов
Здравствуйте! Нужна помощь. Я начинающий программист, грубо говоря, нуб. У меня вопрос следующий.
Динамическое создание и удаление элементов
Есть форма по которой можно перемещать изображения которые описываются и создаются с помощью.
Источник
Удаление элементов формы
Динамическое удаление элементов с формы
Подскажите, как можно динамически (по нажатию кнопки) удалить с формы элементы управления? Функция.
Удаление элементов с формы
Всем привет Есть несколько динамических lebel’ов на форме, подскажите как удалить их, для новой.
Удаление записи из формы по команде с другой формы VBA
Здравствуйте! Подскажите пожалуйста, по коду. немного переделал функционал в одной из форм. Была.
Ладно бы 10 панелей надо было удалять.
Добавлено через 57 секунд
ну а вообще к контролу можно обращаться по ему имени:
Добавление элементов к дереву, удаление элементов и поиск уровня с наибольшей суммой элементов
Помогите пожалуйста! нужно разработать программу для работы с деревом. В узлах дерева содержатся.
Как изменять размеры элементов формы при изменении самой формы
Есть форма, когда изменяется её размер нужно чтобы все элементы изменялись пропорционально вместе с.
Дизайнер формы неправильно определяет свойства элементов самой формы
Здравствуйте. Столкнулся с такой проблемой: установил на форме элемент DataGridView и с ним в файле.
Удаление формы
Доброго времени суток. Я удалил форму. Но после этого при компиляции появляется ошибка: неправильно.
Источник
Windows Forms: как скрыть кнопку Закрыть (x)?
Мне нужно скрыть только кнопку Закрыть, есть ли способ сделать это?
Update: у меня было разрешение отключить его, что проще 🙂 спасибо всем!
8 ответов
вы не можете скрыть его, но вы можете отключить его, переопределив свойство CreateParams формы.
мы можем скрыть кнопку «закрыть» на форме настройки this.ControlBox=false;
Ну, вы можете скрыть его, удалив все системное меню:
конечно, это удаляет кнопки минимизации и максимизации.
Если вы сохраняете системное меню, но удаляете пункт Закрыть, кнопка Закрыть остается, но отключена.
окончательная альтернатива-нарисовать не клиентскую область самостоятельно. Это довольно трудно понять.
Если вы действительно хотите скрыть его, как в «не видно», то вам, вероятно, придется создать форму без границ и нарисовать компоненты заголовка самостоятельно. Библиотека VisualStyles имеет доступные элементы Windows. Вам также придется добавить обратно в функциональность изменения размера формы или перемещения формы, схватив панель заголовка. Не говоря уже о меню в углу.
в большинстве случаев трудно оправдать, что кнопка» Закрыть » недоступна, особенно когда вам нужна модальная форма с минимизирующими возможностями. Минимизация модальной формы действительно не имеет смысла.
вы можете скрыть закройте окно с помощью
и не забудьте добавить пробел в this.Text = » » чтобы сделать это так
в свойствах вашей формы установите «Control Box» = False, но он также скроет минимизированный и Максимизированный.
Ну, вы можете скрыть кнопку закрытия, изменив FormBorderStyle из раздела свойств или программно в конструкторе, используя:
затем вы создаете пункт полосы меню для выхода из приложения.
если это опция, вы можете установить
затем воссоздайте кнопки минимизации и максимизации
Источник
Кнопка «Удалить форму» Windows Forms
Лучше всего заключить событие FormClosing формы, подобное этому, и отменить действие закрытия:
Преимущество этого заключается в том, что он не позволяет пользователю закрыть приложение с помощью кнопки закрытия и панели задач.
Очевидно, вы не хотите, чтобы ВСЕГДА отменили форму от закрытия. Поэтому вы захотите установить некоторый тип логического флага, который вы проверите в прослушивателе событий, о том, хотите ли вы, чтобы форма была разрешена для закрытия или нет. Пример:
EDIT: Если вы не хотите так подойти к проблеме, и вы действительно намерены полностью удалить кнопку закрытия, то лучше всего создать свою собственную панель заголовков. В этом случае вы устанавливаете для свойства FormBorderStyle значение None. Затем вы прикрепляете свою настраиваемую строку заголовка к верхней части формы. Вот пример кода, который я сделал некоторое время назад:
Как вы можете видеть из изображения, я также добавил фоновое изображение к элементу управления. В зависимости от вашего терпения и ваших требований вы можете использовать образы и элементы управления PictureBox, чтобы это выглядело так же, как стандартная строка заголовка по мере необходимости.
В приведенном выше примере я разместил три кнопки на элементе управления с изображениями, которые я нашел в Интернете, чтобы представить минимизацию, максимизацию и закрытие. в вашем случае вы просто исключили бы кнопку закрытия. Я также поместил строку в элемент управления с соответствующим шрифтом, который будет использоваться в качестве названия окна.
Добавление настраиваемой строки заголовка в вашу форму легко.
Вы также можете отметить, что я включил события для мыши вниз, вверх и переместился в свою строку заголовка. Это было так, что я мог создавать слушателей в своей форме, чтобы переместить форму, когда пользователь щелкнул мышью и перетащил строку заголовка. Это необязательно и зависит от того, нужен ли пользователь для перемещения вашего окна приложения.
Дополнительным преимуществом этого является то, что можно использовать панель заголовка для дополнительных элементов управления. Например, мое приложение было написано специально для использования на планшетном компьютере с жестким диском с небольшим сенсорным дисплеем. В моем приложении использование ограниченного пространства было чрезвычайно важным. Я смог дополнительно изменить то, что я описал здесь, также включить элемент управления стилем в строке меню непосредственно в строке заголовка. Кроме того, я добавил еще несколько кнопок слева от кнопок спуска, максимизации и закрытия кнопок. Действительно помог мне использовать каждый квадратный дюйм экрана в моем приложении. Не удалось сделать это со стандартной строкой заголовка.
Источник