最新版的XtraGrid 这些DevExpress控件支持在程序里改变控件显示的语言,对于有控件源码的来说,这些不算什么,但如果没有源码可以做的到吗?答案是肯定的,在查看了DevExpress .NET Windows Forms Components Suite带的所有WIN FROMS控件帮助文档后,我找到了相关的支持答案.
最新版的XtraGrid 这些DevExpress控件支持在程序里改变控件显示的语言,对于有控件源码的来说,这些不算什么,但如果没有源码可以做的到吗?答案是肯定的,在查看了DevExpress .NET Windows Forms Components Suite带的所有WIN FROMS控件帮助文档后,我找到了相关的支持答案.
DevExpress的XtraGrid的语言类是DevExpress.XtraGrid.Localization.GridLocalizer.Active
类似的XtraEditors的语言类是DevExpress.XtraEditors.Controls.Localizer.Active
知道结构就好办了.在调用DevExpress的程序下面加入两个C#的类文件就可以了.
两个类文件分别对应对XtraGrid,XtraEditors这两个控件的中文化代码.
例,我的程序下建了两个类文件,分别是 gridzhcn.cs , editzhcn.cs
editzhcn.cs 内容:
using DevExpress.XtraEditors.Controls;
// creating the Localizer descendant
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class Editzhcn : Localizer
{
// overriding the GetLocalizedString method
public override string GetLocalizedString(StringId id)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
switch (id)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
case StringId.None:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "";
}
case StringId.CaptionError:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "错误";
}
case StringId.InvalidValueText:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "非法值";
}
case StringId.CheckChecked:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "选中";
}
case StringId.CheckUnchecked:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "未选中";
}
case StringId.CheckIndeterminate:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Indeterminate";
}
case StringId.DateEditToday:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "今天";
}
case StringId.DateEditClear:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "清除";
}
case StringId.OK:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "&OK";
}
case StringId.Cancel:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "&Cancel";
}
case StringId.NavigatorFirstButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "首个";
}
case StringId.NavigatorPreviousButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "上一个";
}
case StringId.NavigatorPreviousPageButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "上一页";
}
case StringId.NavigatorNextButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "下一个";
}
case StringId.NavigatorNextPageButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "下一页";
}
case StringId.NavigatorLastButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "最后";
}
case StringId.NavigatorAppendButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "增加";
}
case StringId.NavigatorRemoveButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "删除";
}
case StringId.NavigatorEditButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "编辑";
}
case StringId.NavigatorEndEditButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "结束编辑";
}
case StringId.NavigatorCancelEditButtonHint:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "中断编辑";
}
case StringId.NavigatorTextStringFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "记录 {0} 至 {1}";
}
case StringId.PictureEditMenuCut:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "剪切";
}
case StringId.PictureEditMenuCopy:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "复制";
}
case StringId.PictureEditMenuPaste:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "粘贴";
}
case StringId.PictureEditMenuDelete:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "删除";
}
case StringId.PictureEditMenuLoad:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "打开";
}
case StringId.PictureEditMenuSave:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "保存";
}
case StringId.PictureEditOpenFileFilter:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Bitmap Files (*.bmp)|*.bmp|Graphics Interchange Format (*.gif)|*.gif|JPEG File Interchange Format (*.jpg;*.jpeg)|*.jpg;*.jpeg|Icon Files (*.ico)|*.ico|All Picture Files |*.bmp;*.gif;*.jpg;*.jpeg;*.ico;*.png;*.tif|All Files |*.*";
}
case StringId.PictureEditSaveFileFilter:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Bitmap Files (*.bmp)|*.bmp|Graphics Interchange Format (*.gif)|*.gif|JPEG File Interchange Format (*.jpg)|*.jpg";
}
case StringId.PictureEditOpenFileTitle:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "打开";
}
case StringId.PictureEditSaveFileTitle:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "保存至
";
}
case StringId.PictureEditOpenFileError:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "错误的图片格式!";
}
case StringId.PictureEditOpenFileErrorCaption:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "打开错误";
}
case StringId.LookUpEditValueIsNull:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "[无数据]";
}
case StringId.LookUpInvalidEditValueType:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "非法数据类型.";
}
case StringId.MaskBoxValidateError:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "The entered value is incomplete. Do you want to correct it?\r\n\r\nYes - return to the editor and correct the value.\r\nNo - leave the value as is.\r\nCancel - reset to the previous value.\r\n";
}
case StringId.UnknownPictureFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "未知图像格式!!";
}
case StringId.DataEmpty:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "无图像";
}
case StringId.NotValidArrayLength:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Not valid array length.";
}
case StringId.ImagePopupEmpty:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "(空)";
}
case StringId.ImagePopupPicture:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "(图像)";
}
case StringId.ColorTabCustom:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Custom";
}
case StringId.ColorTabWeb:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Web";
}
case StringId.ColorTabSystem:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "System";
}
case StringId.CalcButtonMC:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "MC";
}
case StringId.CalcButtonMR:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "MR";
}
case StringId.CalcButtonMS:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "MS";
}
case StringId.CalcButtonMx:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "M+";
}
case StringId.CalcButtonSqrt:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "sqrt";
}
case StringId.CalcButtonBack:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Back";
}
case StringId.CalcButtonCE:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "CE";
}
case StringId.CalcButtonC:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "C";
}
case StringId.CalcError:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Calculation Error";
}
}
return "";
}
}
gridzhcn.cs 内容:
using DevExpress.XtraGrid.Localization;
// creating the Localizer descendant
public class Gridzhcn : GridLocalizer
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
// overriding the GetLocalizedString method
public override string GetLocalizedString(GridStringId id)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
switch (id)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
case GridStringId.FileIsNotFoundError:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "File {0} is not found";
}
case GridStringId.ColumnViewExceptionMessage:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return " 请改正错误数据 ?";
}
case GridStringId.CustomizationCaption:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "字段隐藏窗口";
}
case GridStringId.CustomizationColumns:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Columns";
}
case GridStringId.CustomizationBands:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Bands";
}
case GridStringId.PopupFilterAll:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "(所有)";
}
case GridStringId.PopupFilterCustom:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "(自定义)";
}
case GridStringId.PopupFilterBlanks:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "(空值)";
}
case GridStringId.PopupFilterNonBlanks:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "(非空值)";
}
case GridStringId.CustomFilterDialogFormCaption:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "自定义筛选条件";
}
case GridStringId.CustomFilterDialogCaption:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "条件为:";
}
case GridStringId.CustomFilterDialogRadioAnd:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "&And";
}
case GridStringId.CustomFilterDialogRadioOr:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "&Or";
}
case GridStringId.CustomFilterDialogOkButton:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "&Ok";
}
case GridStringId.CustomFilterDialog2FieldCheck:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Field";
}
case GridStringId.CustomFilterDialogCancelButton:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "&Cancel";
}
case GridStringId.CustomFilterDialogConditionEQU:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "等于=";
}
case GridStringId.CustomFilterDialogConditionNEQ:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "不等于<>";
}
case GridStringId.CustomFilterDialogConditionGT:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "大于>";
}
case GridStringId.CustomFilterDialogConditionGTE:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "大于或等于>=";
}
case GridStringId.CustomFilterDialogConditionLT:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "小于<";
}
case GridStringId.CustomFilterDialogConditionLTE:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "小于或等于>=";
}
case GridStringId.CustomFilterDialogConditionBlanks:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "空值";
}
case GridStringId.CustomFilterDialogConditionNonBlanks:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "非空值";
}
case GridStringId.CustomFilterDialogConditionLike:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "包含";
}
case GridStringId.CustomFilterDialogConditionNotLike:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "不包含";
}
case GridStringId.MenuFooterSum:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Sum";
}
case GridStringId.MenuFooterMin:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Min";
}
case GridStringId.MenuFooterMax:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Max";
}
case GridStringId.MenuFooterCount:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Count";
}
case GridStringId.MenuFooterAverage:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Average";
}
case GridStringId.MenuFooterNone:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "None";
}
case GridStringId.MenuFooterSumFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "SUM={0:#.##}";
}
case GridStringId.MenuFooterMinFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "MIN={0}";
}
case GridStringId.MenuFooterMaxFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "MAX={0}";
}
case GridStringId.MenuFooterCountFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "{0}";
}
case GridStringId.MenuFooterAverageFormat:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "AVR={0:#.##}";
}
case GridStringId.MenuColumnSortAscending:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "升序排序";
}
case GridStringId.MenuColumnSortDescending:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "降序排序";
}
case GridStringId.MenuColumnGroup:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "进行分组";
}
case GridStringId.MenuColumnUnGroup:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "取消分组";
}
case GridStringId.MenuColumnColumnCustomization:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "显示/隐藏字段";
}
case GridStringId.MenuColumnBestFit:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "自动宽度";
}
case GridStringId.MenuColumnFilter:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "筛选";
}
case GridStringId.MenuColumnClearFilter:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "清除筛选条件";
}
case GridStringId.MenuColumnBestFitAllColumns:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "自动宽度 (所有)";
}
case GridStringId.MenuGroupPanelFullExpand:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "展开全部分组";
}
case GridStringId.MenuGroupPanelFullCollapse:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "收缩全部分组";
}
case GridStringId.MenuGroupPanelClearGrouping:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "清除所有分组";
}
case GridStringId.PrintDesignerGridView:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Report Designer (Grid View)";
}
case GridStringId.PrintDesignerCardView:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Report Designer (Card View)";
}
case GridStringId.PrintDesignerBandedView:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "Report Designer (Banded View)";
}
case GridStringId.PrintDesignerBandHeader:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "BandHeader";
}
case GridStringId.MenuColumnGroupBox:
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "分组区";
}
}
return "";
}
}
把文件加入工程里,并在FROM_LOAD里加入如下代码
Editzhcn myeditLocalizer = new Editzhcn();
Gridzhcn mygridLocalizer = new Gridzhcn();
DevExpress.XtraEditors.Controls.Localizer.Active = myeditLocalizer;
DevExpress.XtraGrid.Localization.GridLocalizer.Active = mygridLocalizer;
OK,搞定,是不是感觉好简单,呵呵,经过使用Reflector检查后发现DevExpress .NET Windows Forms Components Suite里带的控件都支持这种语言本地化方式,再一次感觉到.NET的强大,心动不如行动,赶快去试试吧.Enjoy