如何实现C#winform的多语言(devexpress控件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现C#winform的多语言(devexpress控件)相关的知识,希望对你有一定的参考价值。

我在程序里使用了dev控件,程序还要求实现多语言,我的方法是把对应的语言内容存在xml文件中,从xml中读到hashtable,然后在模式窗口的listbox选取语言,传值给主界面,遍历主界面的control,如果hashtable里有这个control的名字就赋对应的text值,VS自带的控件都没问题,可是dev控件如XtraNavBarGroup这样的如何遍历的到,另外如何赋caption值

好吧,同求,不过遍历DEV的控件很简单,就是在caption的时候出问题,table中间只有两列分别是name和text,xml中间指定caption的话就会提示未将对象设置引用到实例,目前我也很纠结,不知道怎么做
if (control.GetType() == typeof(DevExpress.XtraEditors.PanelControl))
GetSubControls(control.Controls, table);
if (control.GetType() == typeof(DevExpress.XtraEditors.GroupControl))
GetSubControls(control.Controls, table);
if (control.GetType() == typeof(DevExpress.XtraBars.Ribbon.RibbonPage))
GetSubControls(control.Controls, table);
if (control.GetType() == typeof(DevExpress.XtraBars.BarButtonItem))
GetSubControls(control.Controls, table);
这样就可以遍历到DEV的控件了,但是caption的值目前没有解决方案
参考技术A 这个时候要是想更改caption,那么你就必须知道他的上下子集
ribbon的子集是ribbonpage
ribbonpage 的子集是ribbonpageGroup
你所说的那些caption的是ribbonpageGroup的子集
所以只需套几个循环就可以了
foreach (Control item in this.Controls)

if (item.GetType()==typeof(RibbonControl))

foreach (RibbonPage c1 in c.Pages)

foreach (RibbonPageGroup c2 in c1.Groups)

for (int m = 0; m < c2.ItemLinks.Count; m++)

for (int n = 0; n < dt.Rows.Count; n++)

if (c2.ItemLinks[m].Caption == dt.Rows[n][pre].ToString())

c2.ItemLinks[m].Caption = dt.Rows[n][to].ToString();
break;








这样就出来了
参考技术B 多语言应该使用资源文件才对,你自己提供多语言框架的话会和有些控件不兼容

WinForm多语言版本实战项目演练

一、课程介绍

关于如何实现“WinForm多语言版本”网上有很多实现技术方案,可以说是“琳琅满目”,"包罗万象"。俗话说的好:一千个读者就有一千个哈姆雷特!如果您工作中恰好也遇到这种开发需求,但是为了一个自上手简单、维护方便、扩展性强的WinForm多语言版本技术方案而感到烦恼的话,那么很高兴恭喜你看到了阿笨的本次分享课程;阿笨结合的是自己在实际工作中遇到真实项目案例,特别的总结并且分享出来给大家,从而避免重复造轮子这种事情。

如果您对本次分享《WinForm多语言版本实战项目演练》课程感兴趣的话,那么请跟着阿笨一起学习吧。

废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、涉及覆盖的知识点

2.1、掌握XML、JSON序列化和反序列化常用技术手段。

2.2、WinForm桌面应用程序实战开发小技巧和技能。

2.3、如何优雅实现 WinForm 程序的界面多语言版本。

2.4、如何 优雅 实现在运行时切换 WinForm 程序的界面语言。

2.5、面向对象编程( OOP )设计技巧实战运用,实现应用程序的“高聚集、低耦合”。

三、实现原理和方案解读

3.1、关于多语言处理实现方案有几下几种

3.2、关于多语言实现原理如下:

一句话:WinForm应用程序读取指定的语言包配置文件(.xml,json,data等自定义格式文件)

技术分享图片

多语言实现原理图

四、实战演练源代码在线演示和解读

技术分享图片

在线观看


五、总结

技术分享图片

不信的话,扫一扫


以上是关于如何实现C#winform的多语言(devexpress控件)的主要内容,如果未能解决你的问题,请参考以下文章

WinForm多语言版本实战项目演练

在WinForm应用程序中快速实现多语言的处理--开发框架模块的整合

C# winForm程序项目如何设置多语言?

分享两种实现Winform程序的多语言支持的解决方案

在运行时切换 WinForm 程序的界面语言 ---------多语言设置基础

求教用C#实现多语言的程序