2017-10-10 81 views
0

在我用C#編寫的Windows窗體應用程序中,我有一個DateTimePicker控件。我想要將控件的文本部分居中,但這有可能嗎? 我現在的人在左邊有文字,在右邊給了很多空間。是否可以居中DateTimePicker的文本?

enter image description here

我試圖

myDateTimePicker.TextAlign = ContentAlignment.MiddleCenter; 

,但它給了錯誤:

'System.Windows.Forms.DateTimePicker' does not contain a definition for 'TextAlign' and no extension method 'TextAlign' accepting a first argument of type 'System.Windows.Forms.DateTimePicker' could be found (are you missing a using directive or an assembly reference?)

我找不到,似乎工作的任何財產,我找不到任何地方解決方案在互聯網上。這是不可能的嗎?

+0

在舊的WinForms中很可能無法做到這一點。考慮切換到WPF,您可以在其中設置/自定義控件。 – Xiaoy312

+2

這總是可能的......但並不總是那麼簡單。例如,您可以重寫OnPaint處理程序,但由於您無法依賴基礎Paint,因此在任何情況下都可以繪製所有內容。 –

回答

2

您可以隨時通過繼承DateTimePicker覆蓋OnPaint處理程序:

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 
     }); 
    } 
} 

然而,滾動條是不是在這裏畫,所以你可能必須以某種方式湊合......

不幸的是,你可以」 t在Reference Source上找到​​的定義。

相關問題