2010-12-08 3 views
10

Как сообщить Telerik для WinForms, какую из его тем использовать?Как переключать темы в Telerik WinForms?

Я создал новый проект WinForms и сбросил RadPageView в форме, но все же есть 5-пиксельный край мертвого пространства, вкладки почти в два раза выше, чем они должны быть, и все блестяще и синий. Даже несмотря на потраченное впустую пространство, весь этот синий материал выглядел бы ужасно неуместным в нашем приложении. Мне просто нужен стандартный вид Windows, и я предполагаю, что для этого нужно выбрать другую, менее голубую, менее блестящую тему. (Или есть другой способ?)

Вот что я пробовал:

  • Я попытался установить EnableTheming Ложь, но тогда язычки не имеют границ вообще, так что нет абсолютно никаких признаков того, где клик или вкладка активна - ничего хорошего.
  • Я могу скрыть свойство ThemeName в Property Grid, но единственными параметрами являются «Reset» и «ControlDefault». Ни одна настройка не делает ничего (даже если EnableTheming установлен в True).
  • В панели инструментов есть куча классов тем (AquaTheme, BreezeTheme и т. Д.), Но добавление их в мою форму не имеет никакого значения. Я думал, они могут появиться в выпадающем списке ThemeName, но они этого не делают.
  • Я попытался сбросить RadThemeManager в моей форме, но у него есть только коллекция LoadedThemes, которая пуста. Я могу добавить к нему что-то, но это просто добавляет ThemeSource, и установка одного из них, кажется, связана с просмотром файла, и у меня нет файлов тем для просмотра.
  • В RadPageView есть свойство ThemeClassName, но это всего лишь строка (по умолчанию используется Telerik.WinControls.UI.RadPageView), и я понятия не имею, к чему я могу ее изменить, или как она относится к темам.

Это смешно. Все, что я хочу - это элемент управления вкладкой, который выглядит как элемент управления вкладкой! Как я могу это сделать?

+0

Посмотрите онлайн-помощь Telerik, чтобы узнать, поможет ли это вам: http://www.telerik.com/help/winforms/overview.html – adrianbanks 2010-12-08 23:06:49

ответ

13

Лучшим способом выполнения этой прикладной программы было бы использовать службу ThemeResolutionService. Сначала вам нужно вытащить одну из тем из панели инструментов. Например, если вы добавите компонент Windows7Theme в свою форму, вы должны применить тему, используя следующее.

private void Form1_Load(object sender, EventArgs e) 
{ 
    ThemeResolutionService.ApplicationThemeName = "Windows7"; 
} 

Я рекомендую проверить это видео, связанное с тем, как хорошо: http://tv.telerik.com/watch/winforms/visualstylebuilder/changing-themes-at-run-time-with-radcontrols-winforms

3

В настоящее время я работаю над приложением Winform/Telerik. Это приложение MDI.

Во-первых, я добавил в References моего Проекта длл Telerik.Wincontrols.Themes.Breeze, то в конструкторе моей главной формы, вот что я сделал:

private fMain() 
    { 
     InitializeComponent(); 

     ThemeResolutionService.ApplicationThemeName = "Breeze"; 
     RadGridLocalizationProvider.CurrentProvider = new FrenchRadGridLocalizationProvider(); 
    } 

Я также добавил Французский RadGridLocalizationProvider.

И это работает, все мои RadDataGridViews на французском языке и имеют тему Breeze.

Даже если используемая форма не является Telerik, это мой случай, я не использую RadForm!

0

Для загрузки темы динамичны, я следующее:

private void LoadTheme() 
{ 

     var themefiles = Directory.GetFiles(System.Windows.Forms.Application.StartupPath, "Telerik.WinControls.Themes.*.dll"); 

     foreach (var theme in themefiles) 
     { 
      var themeAssembly = Assembly.LoadFile(theme); 
      var themeType = themeAssembly.GetTypes().Where(t => typeof(RadThemeComponentBase).IsAssignableFrom(t)).FirstOrDefault(); 
      if (themeType != null) 
      { 
       RadThemeComponentBase themeObject = (RadThemeComponentBase)Activator.CreateInstance(themeType); 
       if (themeObject != null) 
       { 
        themeObject.Load(); 
       } 
      } 
     } 
     var themeList = ThemeRepository.AvailableThemeNames.ToList();     
      themeDropDown.DataSource = themeList; 
} 

private void ThemeDropDown_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) 
{ 
      string strTheme = themeDropDown.Text; 
      Theme theme = ThemeResolutionService.GetTheme(strTheme); 
      if (theme != null) 
      { 
        ThemeResolutionService.ApplicationThemeName = theme.Name;  
      } 
} 

мне удалось добиться полного динамического изменения темы опыта. Если Telerik выпускает или обновляет темы в будущем, единственное, что требуется, - это добавить DLL темы в папку приложения.

Смежные вопросы