C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon

Posted xyz0835

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon相关的知识,希望对你有一定的参考价值。

1.使用XtraMessageBoxForm,自定义Icon

2.重写XtraMessageBoxForm,自定义消息字体,标题字体

3.注册XtraMessageBoxForm的Showing事件,自定义按钮字体及按钮大小

 

具体代码如下,只写了简单两种方法,可自己扩展,赋值MessageBoxIcon可以显示想要的Icon

 

    public static class UIMessageBox
    
        static UIMessageBox()
        
            MessageBoxForm.MessageBoxFont = new Font("Arial", 14F); //定义字体类型
        

        static readonly Icon MessageBoxIcon = null;


        public static void Show(string message)
        
            ShowInternal(null, message, "Notice", SystemIcons.Information, DialogResult.OK);
        

        public static void Show(Control owner, string message)
        
            ShowInternal(owner, message, "Notice", SystemIcons.Information, DialogResult.OK);
        

private static DialogResult ShowInternal(Control owner, string message, string caption, Icon messageIcon, params DialogResult[] dialogResults) MessageBoxForm form = new MessageBoxForm(); form.Icon = MessageBoxIcon; XtraMessageBoxArgs args = new XtraMessageBoxArgs(owner, message, caption, dialogResults, messageIcon, 0); args.Showing += Args_Showing; return form.ShowMessageBoxDialog(args); private static void Args_Showing(object sender, XtraMessageShowingArgs e) MessageButtonCollection buttons = e.Buttons as MessageButtonCollection; SimpleButton btn = null; foreach (var dialog in (DialogResult[])Enum.GetValues(typeof(DialogResult))) btn = buttons[dialog] as SimpleButton; if (btn != null) btn.Size = new Size(Convert.ToInt32(btn.Width * 1.2), Convert.ToInt32(btn.Height * 1.2)); //按钮大小 btn.Font = e.Form.Font; //按钮字体 internal class MessageBoxForm : XtraMessageBoxForm internal static Font MessageBoxFont = new Font("Arial", 10F); public MessageBoxForm() Appearance.Font = MessageBoxFont; protected override FormPainter CreateFormBorderPainter() return new MessageBoxFormPainter(this, LookAndFeel); internal class MessageBoxFormPainter : FormPainter internal MessageBoxFormPainter(Control owner, ISkinProvider provider) : base(owner, provider) protected override void DrawText(GraphicsCache cache) string text = Text; if (text == null || text.Length == 0 || TextBounds.IsEmpty) return; AppearanceObject appearance = new AppearanceObject(GetDefaultAppearance()); appearance.Font = Owner.Font; appearance.TextOptions.Trimming = Trimming.EllipsisCharacter; Rectangle r = RectangleHelper.GetCenterBounds(TextBounds, new Size(TextBounds.Width, appearance.CalcDefaultTextSize(cache.Graphics).Height)); DrawTextShadow(cache, appearance, r); cache.DrawString(text, appearance.Font, appearance.GetForeBrush(cache), r, appearance.GetStringFormat()); protected override int CalcTextHeight(Graphics graphics, AppearanceObject appearance) return (int)(graphics.MeasureString(Text, Owner.Font).Height); //标题栏的高度

 

调用时:

UIMessageBox.Show("This is a message");

 

以上是关于C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon的主要内容,如果未能解决你的问题,请参考以下文章

c# devexpress wpf charts问题

C# 控件 DevExpress的DateEdit设置显示日期和时间

C# DevExpress控件 repositoryItemCheckEdit

C# 使用 Devexpress GridControl 显示大图标视图

c#中第三方控件问题

c# devexpress 双击在两个网格之间传输数据