Rethinaprasath Ответов: 3

Как изменить цвет границы формы с помощью приложения Windows


Привет

Как изменить цвет границы формы.Возможно это или нет.

3 Ответов

Рейтинг:
2

emmawatsonlover

Другой вариант решения этой проблемы заключается в следующем
1 - Первое изменение Форма собственность formborderstyle значение к никто.
2 - Использование панель и установить как содержание формы содержание и изменить форму фон красный или другой цвет, который вы хотите использовать для своей границы.
3 - Добавить кнопка сверху-левая сторона для закрытия форточки
4 - сделать форму перетаскиваемый

Я использовал этот трюк правильно


Рейтинг:
0

OriginalGriff

Это, конечно, не просто, и, вероятно, больше проблем, чем стоит - граница находится вне контроля приложения (чтобы поддерживать согласованный внешний вид и чувствовать себя частью ОС, а не приложения), и единственный прямой контроль, который у вас есть, - это удалить границу и нарисовать ее самостоятельно-однако это лишит вас возможности изменять размер формы.

Есть один образец, который я видел: http://customerborderform.codeplex.com/[^- но я понятия не имею, сколько работы вам придется сделать, чтобы заставить его работать в вашем коде.


Рейтинг:
0

Member 14781845

Шаги:

1. Установите для параметра FormBorderStyle значение None.
2. Получите панель набора панелей.Док-станция сверху и отрегулируйте размер.
3. Выберите нужный цвет панели.
4. Сделайте событие Panel_MouseDown, чтобы сделать форму Перетаскиваемой


// Drag Form
        [DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
        private extern static void ReleaseCapture();
        [DllImport("user32.DLL", EntryPoint = "SendMessage")]
        private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
        
        private void TopPanel_MouseDown(object sender, MouseEventArgs e)
        {
            ReleaseCapture();
            SendMessage(this.Handle, 0x112, 0xf012, 0);
        }
        
        // Close-Maximize-Minimize
        private void CloseIconButton_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void MaximizeIconButton_Click(object sender, EventArgs e)
        {
            if (WindowState == FormWindowState.Normal)
            {
                WindowState = FormWindowState.Maximized;
                FormBorderStyle = FormBorderStyle.None;
                MaximizeIconButton.IconChar = FontAwesome.Sharp.IconChar.WindowRestore;
            }
            else
            {
                WindowState = FormWindowState.Normal;
                MaximizeIconButton.IconChar = FontAwesome.Sharp.IconChar.Square;
            }
        }

        private void MinimizeIconButton_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Minimized;
        }
        #endregion



Вот и все, к чему я пришел. Но это не делает форму изменяемой по размеру, поэтому она не очень интерактивна...