Как установить текст заголовка XtraForm в середине, не заставляя кнопки двигаться?

1

Как установить XtraForm заголовка XtraForm в середину строки заголовка?
Я попробовал пример из другого ответа, но он заставляет кнопки окна перемещать несколько пикселей в зависимости от фокуса.

Когда я нажимаю кнопки окна заголовка окна, кнопки переходят в одну позицию, когда я нажимаю кнопки мыши, они перемещаются в другое положение с несколькими пикселами.

  • 0
    Я попробовал решение из ответа, который вы упомянули, и все работает правильно. Вы пытались сообщить об этой проблеме в службу поддержки DevExpress ?
  • 0
    Еще нет. Знаете ли вы, может ли этот эффект быть вызван какой-то пользовательской настройкой скина?
Показать ещё 2 комментария
Теги:
winforms
devexpress

1 ответ

0
Лучший ответ

Попробуйте следующий подход (на основе 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());
        }
    }
}
  • 0
    Исправлена проблема с перемещением кнопок окна. Спасибо!
  • 0
    Рад слышать, что проблема решена! Я считаю, что сейчас самое время связаться с DevExpress Team по этому вопросу и предложить ознакомиться с КБ-статьей.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню