Как изменить название формы c кодом
Перейти к содержимому

Как изменить название формы c кодом

  • автор:

Изменить положение названия формы

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

Отслеживать
задан 25 июл 2018 в 11:26
Novitskiy Denis Novitskiy Denis
1,532 11 11 серебряных знаков 27 27 бронзовых знаков

Рискну предположить, что это никак не изменить, ибо оформление окон управляется виндами. Для кастомных заголовков потребуется безрамочное окно и чуть-чуть творчества. Например.

25 июл 2018 в 11:34

+1 к тому, что разница обусловлена используемой версией Windows (8/10 в примере, 7 у Вас) и изменить положение просто так не получится. Но если хочется не просто, то посмотрите похожий вопрос на английском: stackoverflow.com/questions/11947314/…

25 июл 2018 в 11:51
Суждение не верно о версии виндовс — пример dl4.joxi.net/drive/2018/07/25/0008/3395/548163/63/…
25 июл 2018 в 12:00
@DigitalCore — как вы изменили положение в своем примере?
25 июл 2018 в 12:13

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Вот такой можно сделать костыль (накидать пробелов перед тайтлом)! 😀 Минус очевиден — работает только для фиксированного размера формы, для растягиваемой — нужно при ресайзе постоянно пересчитывать.

private void CenterTitle() < //упоротый TextRenderer коряво считает ширину короткого текста, //возможно нужна другая перегрузка var titleWidth = TextRenderer.MeasureText(Text + Text, Font).Width / 2.0; var fillerRequiredWidth = (this.Width - titleWidth) / 2; //упоротый TextRenderer коряво считает ширину короткого текста, //возможно нужна другая перегрузка var spaceWidth = TextRenderer.MeasureText(" ", Font).Width / 20.0; var spaceCount = (int)Math.Ceiling(fillerRequiredWidth / spaceWidth); var spaces = new String(' ', spaceCount); Text = spaces + Text; >

Отслеживать
ответ дан 25 июл 2018 в 13:22
4,217 1 1 золотой знак 19 19 серебряных знаков 31 31 бронзовый знак
спасибо, думал, что это можно сделать проще, изменив какое-то свойство:)
25 июл 2018 в 13:26
@NovitskiyDenis разумней написать свой класс для формы с таким отображением))
25 июл 2018 в 13:29

А если на Win8 потом это запустить? (там заголовок как раз штатно по центру отображается): stackoverflow.com/q/11824181/6766879

25 июл 2018 в 13:44

@АндрейNOP var osVersion = Environment.OSVersion.Version; if (osVersion.Major == 6 && osVersion.Minor == 2) return; например так 😀

25 июл 2018 в 13:57
Ну да, продолжим наращивать костыли! 😀
25 июл 2018 в 13:58

Вид строки заголовка и рамки у окна полностью определяется Windows. Если вы хотите его изменить, нужно реализовать их отображение самостоятельно. Это можно сделать, например, обработкой сообщения WM_NCPAINT, как здесь. Но можно попробовать и вот так:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsFormsTest < public partial class Form1 : Form < public const int WM_NCLBUTTONDOWN = 0xA1; public const int HT_CAPTION = 0x2; private const int HTLEFT = 10, HTRIGHT = 11, HTTOP = 12, HTTOPLEFT = 13, HTTOPRIGHT = 14, HTBOTTOM = 15, HTBOTTOMLEFT = 16, HTBOTTOMRIGHT = 17; const int sizew = 5; const int htitle = 26; Rectangle TopRc < get < return new Rectangle(0, 0, this.ClientSize.Width, sizew); >> Rectangle LeftRc < get < return new Rectangle(0, 0, sizew, this.ClientSize.Height); >> Rectangle BottomRc < get < return new Rectangle(0, this.ClientSize.Height - sizew, this.ClientSize.Width, sizew); >> Rectangle RightRc < get < return new Rectangle(this.ClientSize.Width - sizew, 0, sizew, this.ClientSize.Height); >> Rectangle TopLeft < get < return new Rectangle(0, 0, sizew, sizew); >> Rectangle TopRight < get < return new Rectangle(this.ClientSize.Width - sizew, 0, sizew, sizew); >> Rectangle BottomLeft < get < return new Rectangle(0, this.ClientSize.Height - sizew, sizew, sizew); >> Rectangle BottomRight < get < return new Rectangle(this.ClientSize.Width - sizew, this.ClientSize.Height - sizew, sizew, sizew); >> [System.Runtime.InteropServices.DllImportAttribute("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [System.Runtime.InteropServices.DllImportAttribute("user32.dll")] public static extern bool ReleaseCapture(); public Form1() < InitializeComponent(); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.DoubleBuffered = true; this.SetStyle(ControlStyles.ResizeRedraw, true); Label labelTitle = new Label(); labelTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); labelTitle.Location = new System.Drawing.Point(sizew + htitle, sizew); labelTitle.Name = "labelTitle"; labelTitle.Size = new System.Drawing.Size(this.Width - htitle * 2 - sizew - 6, htitle); labelTitle.Text = this.Text; labelTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; labelTitle.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label1_MouseDown); this.Controls.Add(labelTitle); Button bClose = new Button(); bClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); bClose.Location = new System.Drawing.Point(this.Width - htitle - sizew, sizew); bClose.Name = "bClose"; bClose.Size = new System.Drawing.Size(htitle, htitle); bClose.Text = "X"; bClose.UseVisualStyleBackColor = true; bClose.Click += new System.EventHandler(this.button2_Click); this.Controls.Add(bClose); Icon icon = this.Icon; Bitmap bmp = icon.ToBitmap(); PictureBox pbox = new PictureBox(); pbox.Location = new Point(sizew, sizew); pbox.Image = bmp; pbox.SizeMode = PictureBoxSizeMode.Zoom; pbox.Size = new Size(htitle, htitle); this.Controls.Add(pbox); >protected override void OnPaint(PaintEventArgs e) < e.Graphics.FillRectangle(Brushes.Gray, TopRc); e.Graphics.FillRectangle(Brushes.Gray, LeftRc); e.Graphics.FillRectangle(Brushes.Gray, RightRc); e.Graphics.FillRectangle(Brushes.Gray, BottomRc); >protected override void WndProc(ref Message message) < base.WndProc(ref message); if (message.Msg == 0x84) // WM_NCHITTEST < var cursor = this.PointToClient(Cursor.Position); if (TopLeft.Contains(cursor)) message.Result = (IntPtr)HTTOPLEFT; else if (TopRight.Contains(cursor)) message.Result = (IntPtr)HTTOPRIGHT; else if (BottomLeft.Contains(cursor)) message.Result = (IntPtr)HTBOTTOMLEFT; else if (BottomRight.Contains(cursor)) message.Result = (IntPtr)HTBOTTOMRIGHT; else if (TopRc.Contains(cursor)) message.Result = (IntPtr)HTTOP; else if (LeftRc.Contains(cursor)) message.Result = (IntPtr)HTLEFT; else if (RightRc.Contains(cursor)) message.Result = (IntPtr)HTRIGHT; else if (BottomRc.Contains(cursor)) message.Result = (IntPtr)HTBOTTOM; >> private void label1_MouseDown(object sender, MouseEventArgs e) < if (e.Button == MouseButtons.Left) < ReleaseCapture(); SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); >> private void button2_Click(object sender, EventArgs e) < this.Close(); >> > 

Отслеживать
ответ дан 1 авг 2018 в 10:21
MSDN.WhiteKnight MSDN.WhiteKnight
20.2k 6 6 золотых знаков 38 38 серебряных знаков 81 81 бронзовый знак

  • c#
  • winforms
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.29.8372

Рефакторинг для переименования символов кода

Что? Вы можете переименовывать идентификаторы для символов кода, например для полей, локальных переменных, методов, пространств имен, свойств и типов.

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

Зачем? Копирование и вставка нового имени во всем проекте, скорее всего, приведет к ошибкам. Это средство рефакторинга выполнит переименование без ошибок.

Практические советы

  1. Выделите элемент, который требуется переименовать, или поместите в него текстовый курсор.
    • C#. Highlighted code - C#
    • Visual Basic: Highlighted code - Visual Basic
  2. Затем воспользуйтесь клавиатурой или мышью, как описывается ниже.
    • Клавиатура
      • Нажмите клавиши CTRL+R, а затем — CTRL+R. (Обратите внимание, что сочетание клавиш может отличаться в зависимости от выбранного профиля.)
    • Мышь
      • Выберите Правка > Оптимизация кода > Переименовать.
      • Щелкните код правой кнопкой мыши и выберите пункт Переименовать.
  3. Переименуйте элемент. Для этого просто введите новое имя.
    • C#.
    • Visual Basic: Rename - VB

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

Замечания

  • Начиная с Visual Studio 2019 версии 16.3, при переименовании типа, совпадающего с именем файла, в котором он находится, появляется флажок, позволяющий одновременно переименовать файл. Он появляется при переименовании класса, интерфейса или перечисления. Этот параметр не поддерживается для разделяемых типов с несколькими определениями.
  • Если вы использовали уже существующее имя и это привело к конфликту, в диалоговом окне Переименование отобразится предупреждение. Rename Conflict
  • Другой способ переименования символа — изменение его имени в редакторе. Затем с курсором в имени символа нажмите клавиши CTRL + или просто разверните отображаемое меню значка лампочки и выберите «Переименовать >Rename in the editor

См. также

  • Рефакторинг
  • Просмотр изменений

Обратная связь

Были ли сведения на этой странице полезными?

Изменить заголовок формы

Author24 — интернет-сервис помощи студентам

Изменить заголовок формы
1) Разместите на форме текстовое поле, метку и три кнопки. Кнопка "задать заголовок" выводит в.

Изменить заголовок формы
Помогите пожалуйста мне надо что бы при нажатии на кнопку в с# переименовывалась названия формы? .

Изменить заголовок формы текстом из текстового поля
Текст вводится в текстовое поле TextBox и после нажатия на Button этот текст становится заголовком.

Как изменить заголовок MessageBox
Почему у меня "Ок" и в верху и в низу я в программе прописываю 1 раз "Ок" MessageBox.Show("Вы не.

Как в Visual Studio переименовать проект?

Всем привет. Я пишу код в консольном приложении (.NET Framework). На C Sharp.
Вот мне приспичило поменять название проекта вместо ConsoleApp1.sln на свое. Че-то долго гуглил, какой то Вася Пупкин посоветовал зайти в папку с проектом и его переименовать, но потом в визуал студио ничего не поменялось, и в добавок он написал путь не найден, удалить проект?
Благо у меня была копия. Но я все же нигде не нашел как поменять название.

  • Вопрос задан более трёх лет назад
  • 14794 просмотра

Комментировать

Решения вопроса 3

BasiC2k

.NET developer (open to job offers)

Для переименования проекта:
1. Переименовываете сам проект в Обозревателе решений;
2. В свойствах проекта меняете везде старое название на новое.
3. Закрываете проект, переименовываете папку с ним;
4. Переименовываете MyProjectName.sln ;
5. Открываете блокнотом MyProjectName.sln , меняете название папки на новое.
Всё

Ответ написан более трёх лет назад

Комментировать

Нравится 3 Комментировать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *