Отключить/отключить визуальные стили/темы только для одной формы

У меня есть приложение winforms. В основной форме есть несколько кнопок, которые по клику открывают другие формы.

Есть форма, в которой я хотел бы отключить визуальные стили/тему. Также я хотел бы отключить визуальные стили для своих дочерних элементов. Является ли это возможным? Если да, то как?

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

  • Button1 открывает form1 по клику
  • Button2 открывает form2 по клику
  • Button3 открывает form3 по клику

поэтому, когда я нажимаю Button2, я хотел бы отключить только визуальные стили, но я хотел бы, чтобы визуальные стили были включены для форм: form1 и form3.


person Ralph    schedule 03.04.2017    source источник


Ответы (1)


Вы можете сделать это с помощью PInvoke SetWindowTheme:

[DllImport("uxtheme.dll")]
private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);

Затем, например, в вашем обработчике событий button2:

var form2 = new Form2();
SetWindowTheme(form2.Handle, "", "");
form2.Show();
person Bassie    schedule 03.04.2017
comment
Я думаю, что он поддерживает только Windows Vista [только настольные приложения].. Не могли бы вы проверить здесь? msdn.microsoft.com/en -нас/библиотека/окна/рабочий стол/ - person Pavan Chandaka; 03.04.2017
comment
@pavanc Похоже, что Vista - это минимальное требование. - person Bassie; 04.04.2017
comment
@Bassie Совместим ли он с .NET Framework 1.1? и если я хочу отключить визуальные стили для всего приложения, как мне действовать? - person Ralph; 04.04.2017