DateTimePicker 的文本可以居中吗?

J.D*_*Doe 3 c# datetimepicker text-alignment winforms

在我用 C# 编写的 Windows 窗体应用程序中,我有一个DateTimePicker控件。我想将控件的文本部分居中,但这可能吗?我当前的文本位于左侧,在右侧留出了很多空间。

在此输入图像描述

我试过

myDateTimePicker.TextAlign = ContentAlignment.MiddleCenter;
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

“System.Windows.Forms.DateTimePicker”不包含“TextAlign”的定义,并且找不到接受“System.Windows.Forms.DateTimePicker”类型的第一个参数的扩展方法“TextAlign”(您是否缺少 using 指令或装配参考?)

我找不到任何似乎有效的属性,而且我也无法在互联网上的任何地方找到解决方案。难道这根本不可能吗?

Xia*_*312 6

您始终可以OnPaint通过子类化来覆盖处理程序DateTimePicker

public class CenteredDateTimePicker : DateTimePicker
{
    public CenteredDateTimePicker()
    {
        SetStyle(ControlStyles.UserPaint, true);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle, new StringFormat
        {
            Alignment = StringAlignment.Center,
            LineAlignment = StringAlignment.Center
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,滚动条没有画在这里,所以你可能不得不以某种方式即兴发挥......

不幸的是,您找不到DateTimePicker.OnPainton Reference Source的定义。