C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon
2021-05-29 00:01
标签:两种 draw prot 重写 xargs ide tap ips 按钮 1.使用XtraMessageBoxForm,自定义Icon 2.重写XtraMessageBoxForm,自定义消息字体,标题字体 3.注册XtraMessageBoxForm的Showing事件,自定义按钮字体及按钮大小 具体代码如下,只写了简单两种方法,可自己扩展,赋值MessageBoxIcon可以显示想要的Icon 调用时: C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon 标签:两种 draw prot 重写 xargs ide tap ips 按钮 原文地址:https://www.cnblogs.com/xyz0835/p/11110373.html 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
文章链接:http://soscw.com/essay/88854.html