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函數內第一行,確保能夠執行到。顯示效果如圖:

我這里只改了確定、取消及是否,讀者朋友可根據需要修改其他。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM