Как установить XtraForm
заголовка XtraForm
в середину строки заголовка?
Я попробовал пример из другого ответа, но он заставляет кнопки окна перемещать несколько пикселей в зависимости от фокуса.
Когда я нажимаю кнопки окна заголовка окна, кнопки переходят в одну позицию, когда я нажимаю кнопки мыши, они перемещаются в другое положение с несколькими пикселами.
Попробуйте следующий подход (на основе XtraForm - как выравнивать по центру текст заголовка заголовка). Он работает для меня до решения, предоставляемого командой DevExpress, но не содержит Buttons.CalcButtons
метода Buttons.CalcButtons
который теоретически может повлиять на позицию кнопок формы:
public partial class Form1 : XtraForm {
static Form1() {
SkinManager.EnableFormSkins();
}
public Form1() {
InitializeComponent();
}
protected override FormPainter CreateFormBorderPainter() {
return new CustomFormPainter(this, LookAndFeel);
}
}
public class CustomFormPainter : FormPainter {
public CustomFormPainter(Control owner, DevExpress.Skins.ISkinProvider provider)
: base(owner, provider) {
}
protected override void DrawText(DevExpress.Utils.Drawing.GraphicsCache cache) {
string text = Text;
if(text == null || text.Length == 0 || TextBounds.IsEmpty) return;
using(AppearanceObject appearance = new AppearanceObject(GetDefaultAppearance())) {
appearance.TextOptions.Trimming = Trimming.EllipsisCharacter;
appearance.TextOptions.HAlignment = HorzAlignment.Center;
if(AllowHtmlDraw) {
DrawHtmlText(cache, appearance);
return;
}
Rectangle r = RectangleHelper.GetCenterBounds(TextBounds, new Size(TextBounds.Width, CalcTextHeight(cache.Graphics, appearance)));
DrawTextShadow(cache, appearance, r);
cache.DrawString(text, appearance.Font, appearance.GetForeBrush(cache), r, appearance.GetStringFormat());
}
}
}