zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    Android8.0 启动后台Service
    上周热点回顾(7.20-7.26)团队
    上周热点回顾(7.13-7.19)团队
    上周热点回顾(7.6-7.12)团队
    博客园-阿里云开发者俱乐部上海地区七月份活动通知(2015-07-18)团队
    上周热点回顾(6.29-7.5)团队
    .NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息团队
    从一个简单的ASP.NET 5站点开启.NET跨平台之旅团队
    上周热点回顾(6.22-6.28)团队
    云计算之路-阿里云上:9:55-10:08因流量攻击被进黑洞,造成主站不能正常访问团队
  • 原文地址:https://www.cnblogs.com/xyz0835/p/11110373.html
Copyright © 2011-2022 走看看