如何在Telerik WinForms中切换主题?

如何在Telerik WinForms中切换主题?,winforms,telerik,Winforms,Telerik,我如何告诉Telerik for WinForms使用哪些主题 我创建了一个新的WinForms项目,并在表单上添加了一个RadPageView,但是四周都有5像素的空白,标签的高度几乎是需要的两倍,所有东西都是闪亮的蓝色。即使除去浪费的空间,所有这些蓝色的东西在我们的应用程序中看起来都非常不合适。我只想要一个标准的Windows外观,我假设实现这一点的方法是选择一个不同的、不太蓝、不太亮的主题。还是有别的办法 以下是我尝试过的: 我尝试将EnableTheming设置为False,但是这些选项

我如何告诉Telerik for WinForms使用哪些主题

我创建了一个新的WinForms项目,并在表单上添加了一个RadPageView,但是四周都有5像素的空白,标签的高度几乎是需要的两倍,所有东西都是闪亮的蓝色。即使除去浪费的空间,所有这些蓝色的东西在我们的应用程序中看起来都非常不合适。我只想要一个标准的Windows外观,我假设实现这一点的方法是选择一个不同的、不太蓝、不太亮的主题。还是有别的办法

以下是我尝试过的:

我尝试将EnableTheming设置为False,但是这些选项卡根本没有边框,因此绝对没有显示要单击的位置或哪个选项卡处于活动状态,这一点都不好。 我可以在属性网格中下拉ThemeName属性,但唯一的选项是Reset和ControlDefault。这两个设置都不起作用,即使启用主题设置设置设置为True。 工具箱中有很多主题类,如AquaTheme、Breeztheme等,但是将它们添加到我的表单中并没有任何区别。我想它们可能会出现在ThemeName下拉列表中,但它们没有。 我试着在我的表单上添加一个RadTheManager,但它只有一个LoadedThemes集合,它是空的。我可以添加一些东西,但这只是添加了一个主题资源,设置其中一个似乎需要浏览一个文件,而我没有任何主题文件可以浏览。 RadPageView上有一个ThemeClassName属性,但它只是一个默认为Telerik.WinControls.UI.RadPageView的字符串,我不知道我可能会将其更改为什么,或者它与主题有什么关系。
这太荒谬了。我想要的只是一个看起来像选项卡控件的选项卡控件!如何做到这一点?

在整个应用程序范围内实现此目标的最佳方法是使用Themeresolutions服务。首先需要从工具箱中拖出一个主题。例如,如果将Windows7Theme组件添加到表单中,则应使用以下命令应用主题

private void Form1_Load(object sender, EventArgs e)
{
    ThemeResolutionService.ApplicationThemeName = "Windows7";
}
我建议您也可以查看与主题相关的视频:

我目前正在开发Winform/Telerik应用程序。 这是一个MDI应用程序

首先,我在我的项目的引用中添加了Telerik.Wincontrols.Themes.Breeze dll,然后在我的主窗体的构造函数中,我做了以下工作:

    private fMain()
    {
        InitializeComponent();

        ThemeResolutionService.ApplicationThemeName = "Breeze"; 
        RadGridLocalizationProvider.CurrentProvider = new FrenchRadGridLocalizationProvider();
    }
我还添加了法语RadGridLocalizationProvider

我所有的RadDataGridView都是法语的,并且都有微风主题


即使使用的表单不是Telerik表单(我就是这样),我也不使用RadForm

为了动态加载主题,我做了以下工作:

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。

查看Telerik的在线帮助,看看这是否能让您更进一步:感谢您提供的链接-该链接为我提供了设置默认主题的方法。不幸的是,它不工作-对于一些主题水,微风,它只是保持膨胀的蓝色主题;对于其他扩展的、沙漠的,它将使用与EnableTheming=False相同的无边界平面外观。