Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Andreyip
19 / 19 / 14
Регистрация: 17.08.2014
Сообщений: 129
#1

Кнопка в стиле Windows XP - C#/.NET 4.x

18.05.2018, 11:38. Просмотров 90. Ответов 0
Метки нет (Все метки)

Добрый день.
Помогите нарисовать кнопку в стиле win Xp (квадратная кнопка с тенью)
попробовал сделать кастомный контрол
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public class CheckBoxEx : CheckBox
    {
        [DllImportAttribute("uxtheme.dll")]
        private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
      public  CheckBoxEx():base()
        {
        
        }
        protected override void OnHandleCreated(EventArgs e)
        {
            SetWindowTheme(this.Handle, "", "");
            base.OnHandleCreated(e);
        }
}
но данный стиль работает только если
C#
1
FlatStyle = FlatStyle.System
и при этом так же не отрисовывается изображение на кнопке.
Как можно отрисовать кнопку в старом стиле и с иконкой на кнопке.
заранее спасибо.

Добавлено через 4 часа 57 минут
Добил.
использую TabControl с apperance Button+ скрытой формой табов.
Использую только кнопки.

Добавлено через 8 часов 53 минуты
В общем наклепал я свой класс для отрисовки кнопки. Отрабаотывает теперь как надо.
Пример наследник checkbox
Может кому то будет полезен.
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
34
35
36
37
38
39
40
41
 public class CheckBoxEx : CheckBox
{
        
        protected override void OnMouseEnter(EventArgs eventargs)
        {
          
        }
        protected override void OnMouseLeave(EventArgs eventargs)
        {
           
        }
        protected override void OnPaint(PaintEventArgs e)
       {
                FlatAppearance.BorderSize = 0;
                base.OnPaint(e);
                if (Appearance == Appearance.Button)
                {
                    if (FlatStyle == FlatStyle.Flat)
                    {
                        var Shadowcolor = SystemColors.ButtonShadow;
                        var ShadowWidth = 2;
 
                        if (this.CheckState == CheckState.Unchecked)
                        {
                            ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle,
                          Shadowcolor, ShadowWidth, ButtonBorderStyle.Outset,
                           Shadowcolor, ShadowWidth, ButtonBorderStyle.Outset,
                           Shadowcolor, ShadowWidth, ButtonBorderStyle.Outset,
                         Shadowcolor, ShadowWidth, ButtonBorderStyle.Outset);
 
                        }
                        else
                            ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle,
                     Shadowcolor, ShadowWidth, ButtonBorderStyle.Inset,
                     Shadowcolor, ShadowWidth, ButtonBorderStyle.Inset,
                     Shadowcolor, ShadowWidth, ButtonBorderStyle.Inset,
                     Shadowcolor, ShadowWidth, ButtonBorderStyle.Inset);
                    }
                }
           }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2018, 11:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 4.x Кнопка в стиле Windows XP (C#):

Кнопки в стиле Windows 8
Доброго времени, Вопрос следующего характера. Решил попробовать сделать...

MenuStrip в стиле Windows 7
Не могу нигде найти как сделать панель меню как в системе. Я имею ввиду стиль...

Приложения в стиле Метро под Windows 7
Кто что знает, как добиться в VS C# 2010 эффекта окон стиля Метро, что то на...

Чтобы кнопка в любом Windows отображалась плоской как в Windows 8
Добрый день! Есть программа на Windows Forms. Подскажите, можно ли сделать...

Во общем ситуация такая. Есть форма на форме кнопка. Кнопка запускает метод. После запуска метода форма умирае
Во общем ситуация такая. Есть форма на форме кнопка. Кнопка запускает метод....

Кнопки в стиле Ubuntu
Собственно вопрос, можно ли сделать такое? Просто поставил тему на винду,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2018, 11:38
Привет! Вот еще темы с решениями:

Создание меню в стиле Paint
Пишу рисовалку, хочу организовать для нее меню как в пейнте. Подскажите как...

Асинхронные методы в стиле Erlang
Уже не в первый раз встречаюсь с задачей и не знаю, как её реализовать согласно...

Как сделать меню в стиле XP?
Как енто сделать???

IpAddress выводится в стиле GUID
string IP; // Получаем имя компа. String host = Dns.GetHostName(); //Метод...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru