颓废程序人生

你今天颓废了吗?

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最新版的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
public class Editzhcn : Localizer {
    
// overriding the GetLocalizedString method
    public override string GetLocalizedString(StringId id)
    
{
        
switch (id)
      
{
            
case StringId.None:
            
{
                  
return "";
            }

            
case StringId.CaptionError:
            
{
                  
return "错误";
            }

            
case StringId.InvalidValueText:
            
{
                  
return "非法值";
            }

            
case StringId.CheckChecked:
            
{
                  
return "选中";
            }

            
case StringId.CheckUnchecked:
            
{
                  
return "未选中";
            }

            
case StringId.CheckIndeterminate:
            
{
                  
return "Indeterminate";
            }

            
case StringId.DateEditToday:
            
{
                  
return "今天";
            }

            
case StringId.DateEditClear:
            
{
                  
return "清除";
            }

            
case StringId.OK:
            
{
                  
return "&OK";
            }

            
case StringId.Cancel:
            
{
                  
return "&Cancel";
            }

            
case StringId.NavigatorFirstButtonHint:
            
{
                  
return "首个";
            }

            
case StringId.NavigatorPreviousButtonHint:
            
{
                  
return "上一个";
            }

            
case StringId.NavigatorPreviousPageButtonHint:
            
{
                  
return "上一页";
            }

            
case StringId.NavigatorNextButtonHint:
            
{
                  
return "下一个";
            }

            
case StringId.NavigatorNextPageButtonHint:
            
{
                  
return "下一页";
            }

            
case StringId.NavigatorLastButtonHint:
            
{
                  
return "最后";
            }

            
case StringId.NavigatorAppendButtonHint:
            
{
                  
return "增加";
            }

            
case StringId.NavigatorRemoveButtonHint:
            
{
                  
return "删除";
            }

            
case StringId.NavigatorEditButtonHint:
            
{
                  
return "编辑";
            }

            
case StringId.NavigatorEndEditButtonHint:
            
{
                  
return "结束编辑";
            }

            
case StringId.NavigatorCancelEditButtonHint:
            
{
                  
return "中断编辑";
            }

            
case StringId.NavigatorTextStringFormat:
            
{
                  
return "记录 {0} 至 {1}";
            }

            
case StringId.PictureEditMenuCut:
            
{
                  
return "剪切";
            }

            
case StringId.PictureEditMenuCopy:
            
{
                  
return "复制";
            }

            
case StringId.PictureEditMenuPaste:
            
{
                  
return "粘贴";
            }

            
case StringId.PictureEditMenuDelete:
            
{
                  
return "删除";
            }

            
case StringId.PictureEditMenuLoad:
            
{
                  
return "打开";
            }

            
case StringId.PictureEditMenuSave:
            
{
                  
return "保存";
            }

            
case StringId.PictureEditOpenFileFilter:
            
{
                  
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:
            
{
                  
return "Bitmap Files (*.bmp)|*.bmp|Graphics Interchange Format (*.gif)|*.gif|JPEG File Interchange Format (*.jpg)|*.jpg";
            }

            
case StringId.PictureEditOpenFileTitle:
            
{
                  
return "打开";
            }

            
case StringId.PictureEditSaveFileTitle:
            
{
                  
return "保存至";
            }

            
case StringId.PictureEditOpenFileError:
            
{
                  
return "错误的图片格式!";
            }

            
case StringId.PictureEditOpenFileErrorCaption:
            
{
                  
return "打开错误";
            }

            
case StringId.LookUpEditValueIsNull:
            
{
                  
return "[无数据]";
            }

            
case StringId.LookUpInvalidEditValueType:
            
{
                  
return "非法数据类型.";
            }

            
case StringId.MaskBoxValidateError:
            
{
                  
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:
            
{
                  
return "未知图像格式!!";
            }

            
case StringId.DataEmpty:
            
{
                  
return "无图像";
            }

            
case StringId.NotValidArrayLength:
            
{
                  
return "Not valid array length.";
            }

            
case StringId.ImagePopupEmpty:
            
{
                  
return "(空)";
            }

            
case StringId.ImagePopupPicture:
            
{
                  
return "(图像)";
            }

            
case StringId.ColorTabCustom:
            
{
                  
return "Custom";
            }

            
case StringId.ColorTabWeb:
            
{
                  
return "Web";
            }

            
case StringId.ColorTabSystem:
            
{
                  
return "System";
            }

            
case StringId.CalcButtonMC:
            
{
                  
return "MC";
            }

            
case StringId.CalcButtonMR:
            
{
                  
return "MR";
            }

            
case StringId.CalcButtonMS:
            
{
                  
return "MS";
            }

            
case StringId.CalcButtonMx:
            
{
                  
return "M+";
            }

            
case StringId.CalcButtonSqrt:
            
{
                  
return "sqrt";
            }

            
case StringId.CalcButtonBack:
            
{
                  
return "Back";
            }

            
case StringId.CalcButtonCE:
            
{
                  
return "CE";
            }

            
case StringId.CalcButtonC:
            
{
                  
return "C";
            }

            
case StringId.CalcError:
            
{
                  
return "Calculation Error";
            }

      }

      
return "";
}

    }

gridzhcn.cs 内容:

using DevExpress.XtraGrid.Localization;

// creating the Localizer descendant
public class Gridzhcn : GridLocalizer 
{
    
// overriding the GetLocalizedString method
    public override string GetLocalizedString(GridStringId id)
    
{
        
switch (id)
        
{
            
case GridStringId.FileIsNotFoundError:
            
{
                
return "File {0} is not found";
            }

            
case GridStringId.ColumnViewExceptionMessage:
            
{
                
return " 请改正错误数据 ?";
            }

            
case GridStringId.CustomizationCaption:
            
{
                
return "字段隐藏窗口";
            }

            
case GridStringId.CustomizationColumns:
            
{
                
return "Columns";
            }

            
case GridStringId.CustomizationBands:
            
{
                
return "Bands";
            }

            
case GridStringId.PopupFilterAll:
            
{
                
return "(所有)";
            }

            
case GridStringId.PopupFilterCustom:
            
{
                
return "(自定义)";
            }

            
case GridStringId.PopupFilterBlanks:
            
{
                
return "(空值)";
            }

            
case GridStringId.PopupFilterNonBlanks:
            
{
                
return "(非空值)";
            }

            
case GridStringId.CustomFilterDialogFormCaption:
            
{
                
return "自定义筛选条件";
            }

            
case GridStringId.CustomFilterDialogCaption:
            
{
                
return "条件为:";
            }

            
case GridStringId.CustomFilterDialogRadioAnd:
            
{
                
return "&And";
            }

            
case GridStringId.CustomFilterDialogRadioOr:
            
{
                
return "&Or";
            }

            
case GridStringId.CustomFilterDialogOkButton:
            
{
                
return "&Ok";
            }

            
case GridStringId.CustomFilterDialog2FieldCheck:
            
{
                
return "Field";
            }

            
case GridStringId.CustomFilterDialogCancelButton:
            
{
                
return "&Cancel";
            }

            
case GridStringId.CustomFilterDialogConditionEQU:
            
{
                
return "等于=";
            }

            
case GridStringId.CustomFilterDialogConditionNEQ:
            
{
                
return "不等于<>";
            }

            
case GridStringId.CustomFilterDialogConditionGT:
            
{
                
return "大于>";
            }

            
case GridStringId.CustomFilterDialogConditionGTE:
            
{
                
return "大于或等于>=";
            }

            
case GridStringId.CustomFilterDialogConditionLT:
            
{
                
return "小于<";
            }

            
case GridStringId.CustomFilterDialogConditionLTE:
            
{
                
return "小于或等于>=";
            }

            
case GridStringId.CustomFilterDialogConditionBlanks:
            
{
                
return "空值";
            }

            
case GridStringId.CustomFilterDialogConditionNonBlanks:
            
{
                
return "非空值";
            }

            
case GridStringId.CustomFilterDialogConditionLike:
            
{
                
return "包含";
            }

            
case GridStringId.CustomFilterDialogConditionNotLike:
            
{
                
return "不包含";
            }

            
case GridStringId.MenuFooterSum:
            
{
                
return "Sum";
            }

            
case GridStringId.MenuFooterMin:
            
{
                
return "Min";
            }

            
case GridStringId.MenuFooterMax:
            
{
                
return "Max";
            }

            
case GridStringId.MenuFooterCount:
            
{
                
return "Count";
            }

            
case GridStringId.MenuFooterAverage:
            
{
                
return "Average";
            }

            
case GridStringId.MenuFooterNone:
            
{
                
return "None";
            }

            
case GridStringId.MenuFooterSumFormat:
            
{
                
return "SUM={0:#.##}";
            }

            
case GridStringId.MenuFooterMinFormat:
            
{
                
return "MIN={0}";
            }

            
case GridStringId.MenuFooterMaxFormat:
            
{
                
return "MAX={0}";
            }

            
case GridStringId.MenuFooterCountFormat:
            
{
                
return "{0}";
            }

            
case GridStringId.MenuFooterAverageFormat:
            
{
                
return "AVR={0:#.##}";
            }

            
case GridStringId.MenuColumnSortAscending:
            
{
                
return "升序排序";
            }

            
case GridStringId.MenuColumnSortDescending:
            
{
                
return "降序排序";
            }

            
case GridStringId.MenuColumnGroup:
            
{
                
return "进行分组";
            }

            
case GridStringId.MenuColumnUnGroup:
            
{
                
return "取消分组";
            }

            
case GridStringId.MenuColumnColumnCustomization:
            
{
                
return "显示/隐藏字段";
            }

            
case GridStringId.MenuColumnBestFit:
            
{
                
return "自动宽度";
            }

            
case GridStringId.MenuColumnFilter:
            
{
                
return "筛选";
            }

            
case GridStringId.MenuColumnClearFilter:
            
{
                
return "清除筛选条件";
            }

            
case GridStringId.MenuColumnBestFitAllColumns:
            
{
                
return "自动宽度 (所有)";
            }

            
case GridStringId.MenuGroupPanelFullExpand:
            
{
                
return "展开全部分组";
            }

            
case GridStringId.MenuGroupPanelFullCollapse:
            
{
                
return "收缩全部分组";
            }

            
case GridStringId.MenuGroupPanelClearGrouping:
            
{
                
return "清除所有分组";
            }

            
case GridStringId.PrintDesignerGridView:
            
{
                
return "Report Designer (Grid View)";
            }

            
case GridStringId.PrintDesignerCardView:
            
{
                
return "Report Designer (Card View)";
            }

            
case GridStringId.PrintDesignerBandedView:
            
{
                
return "Report Designer (Banded View)";
            }

            
case GridStringId.PrintDesignerBandHeader:
            
{
                
return "BandHeader";
            }

            
case GridStringId.MenuColumnGroupBox:
            
{
                
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
posted on 2005-05-03 09:38  颓废  阅读(6540)  评论(6编辑  收藏  举报