如何告诉Telerik WinForms使用哪个主题?
我创建了一个新的WinForms项目,并在表单上删除了一个RadPageView,但是一直有5像素的死区空间,标签几乎是他们需要的两倍高,而且一切都很闪亮蓝色。即使除了浪费的空间,所有这些蓝色的东西在我们的应用程序中看起来非常不合适。我只想要一个标准的Windows外观,我假设实现这一目标的方法是选择一个不同的,不那么蓝,不那么闪亮的主题。 (或者还有另一种方式吗?)
这是我尝试过的:
这太荒谬了。我想要的是一个看起来像标签控件的标签控件!我怎么能这样做?
答案 0 :(得分: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
答案 1 :(得分:3)
我目前正在开发Winform / Telerik应用程序。 这是一个MDI应用程序。
首先,我在项目的参考资料中添加了Telerik.Wincontrols.Themes.Breeze dll,然后在我的主要表单的构造函数中,这就是我所做的:
private fMain()
{
InitializeComponent();
ThemeResolutionService.ApplicationThemeName = "Breeze";
RadGridLocalizationProvider.CurrentProvider = new FrenchRadGridLocalizationProvider();
}
我还添加了法语RadGridLocalizationProvider。
它有效,我所有的RadDataGridViews都是法语版,并且有Breeze主题。
即使使用的Form不是Telerik,也不是我的情况,我不使用RadForm!
答案 2 :(得分: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。