• c#winform程序,修改MessageBox提示框中按钮的文本


    用winform的MessageBox是实现不了的,这里我用的是DevExpress控件的XtraMessageBoxForm

    例如如果想在一个提示框里修改“是”,“否”按钮的文本时,这个时候我们一般都不好改,只能自己写一个form了,但是我们可以派生一个XtraMessageBoxForm的form之后重写方法就可以做到了

     1     class MyCloseXtraMessageBoxForm : XtraMessageBoxForm
     2     {
     3         protected override string GetButtonText(DialogResult target)
     4         {
     5             switch (target)
     6             {
     7                 case DialogResult.Yes:
     8                     return "保存";
     9                 case DialogResult.No:
    10                     return "不保存";
    11             }
    12             return base.GetButtonText(target);
    13         }
    14     }
    然后调用的时候按下面的去调用就行了


    1
    XtraMessageBoxArgs msgBoxArgs = new XtraMessageBoxArgs(this, 2 "是否保存", 3 "提示", 4 new[] { DialogResult.Yes, DialogResult.No, DialogResult.Cancel }, 5 null, 6 0); 7 MyCloseXtraMessageBoxForm msgBoxForm = new MyCloseXtraMessageBoxForm(); 8 DialogResult dr = msgBoxForm.ShowMessageBoxDialog(msgBoxArgs); 9 switch (dr) 10 { 11 case DialogResult.Cancel: 12 break; 13 14 case DialogResult.Yes: 15 break; 16 17 case DialogResult.No: 18 break; 19 20 default: 21 throw new ArgumentOutOfRangeException(); 22 }

    效果如下:

    针对这里面cancel按钮为什么不是“取消”的问题,我还没找到原因,之前都是能显示中文的,实在遇到这个问题,重写cancel按钮的文本就行了

    对于按钮都是英文,感觉每次改写很麻烦,我们可以自己写一个汉化类

    通过下面代码可使“OK”显示为中文:
    首先创建一个继承自Localizer的类: 

    1. using DevExpress.XtraEditors.Controls;  
    2. public class MessboxClass : Localizer  
    3.     {  
    4.         public override string GetLocalizedString(DevExpress.XtraEditors.Controls.StringId id)  
    5.         {  
    6.             switch (id)  
    7.             {  
    8.                 case StringId.XtraMessageBoxCancelButtonText:  
    9.                     return "取消";  
    10.                 case StringId.XtraMessageBoxOkButtonText:  
    11.                     return "确定";  
    12.                 case StringId.XtraMessageBoxYesButtonText:  
    13.                     return "是";  
    14.                 case StringId.XtraMessageBoxNoButtonText:  
    15.                     return "否";  
    16.                 default:  
    17.                     return base.GetLocalizedString(id);  
    18.             }  
    19.         }  
    20.     }  


    这里要注意,要在工程引用中添加DevExpress.Data和DevExpress.XtraEditors。编写上面的类之后在工程的Program.cs文件的main函数中添加:

      DevExpress.XtraEditors.Controls.Localizer.Active = new MessboxClass();  即可。

      如果你的Programs的main函数中有创建窗体,那么最好将上述代码写在main函数内第一行,确保能够执行到。显示效果如图:

    我这里只改了确定、取消及是否,读者朋友可根据需要修改其他。

  • 相关阅读:
    hadoop分片分析
    hadoop输入分片计算(Map Task个数的确定)
    hadoop运行原理之Job运行(五) 任务调度
    hadoop运行原理之Job运行(四) JobTracker端心跳机制分析
    BlockTransferService 实现
    spark 持久化机制
    spark DiskBlockManager
    spark checkpoint机制
    hadoop InputFormat getSplits
    hadoop LineRecordReader
  • 原文地址:https://www.cnblogs.com/marblemm/p/6186614.html
Copyright © 2020-2023  润新知