我有一隻股票的winform的DateTimePicker,看起來像這樣... 的WinForms - 無邊界的DateTimePicker
我想使它看起來像這樣...
的WinForm
TextBox
有一個無邊框選項,我手動創建了一個水平線,以給出無縫下劃線TextBox
的錯覺,但DateTimePicker
似乎沒有無邊框選項。
有什麼我可以做的,使DateTimePicker
看起來像上面的例子,或至少刪除邊界,所以我可以手動放置下劃線?
我有一隻股票的winform的DateTimePicker,看起來像這樣... 的WinForms - 無邊界的DateTimePicker
我想使它看起來像這樣...
的WinForm
TextBox
有一個無邊框選項,我手動創建了一個水平線,以給出無縫下劃線TextBox
的錯覺,但DateTimePicker
似乎沒有無邊框選項。
有什麼我可以做的,使DateTimePicker
看起來像上面的例子,或至少刪除邊界,所以我可以手動放置下劃線?
與代碼量最少的答案將是放置一個面板,通過減小尺寸放置在面板的控制,然後「夾子」的dateTimePicker的(DTP)的邊界的面板。
要實現控件的自定義外觀,必須重寫WndProc方法,該方法處理此控件的所有窗口消息。
protected override void WndProc(ref Message m)
{
IntPtr hDC = GetWindowDC(m.HWnd);
Graphics gdc = Graphics.FromHdc(hDC);
switch (m.Msg)
{
case WM_NC_PAINT:
SendMessage(this.Handle, WM_ERASEBKGND, hDC, 0);
SendPrintClientMsg();
SendMessage(this.Handle, WM_PAINT, IntPtr.Zero, 0);
OverrideControlBorder(gdc);
m.Result = (IntPtr)1; // indicate msg has been processed
break;
case WM_PAINT: base.WndProc(ref m);
OverrideControlBorder(gdc);
OverrideDropDown(gdc);
break;
case WM_NC_HITTEST:
base.WndProc(ref m);
if (DroppedDown)
this.Invalidate(this.ClientRectangle, false);
break;
default:
base.WndProc(ref m);
break;
}
ReleaseDC(m.HWnd, hDC);
gdc.Dispose();
}
這是接近我可以得到它:
你必須使圖像的下拉按鈕。
public class SexyDateTimePicker : DateTimePicker
{
public SexyDateTimePicker() : base()
{
this.SetStyle(ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawLine(Pens.Black, 0, this.ClientSize.Height -1, this.ClientSize.Width, this.ClientSize.Height -1);
e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(Color.Black), 0, 0);
e.Graphics.DrawImage(Properties.Resources.DateOrTimePicker_675, new Point(this.ClientRectangle.X + this.ClientRectangle.Width - 16, this.ClientRectangle.Y));
}
}
你可以繼承'DateTimePicker',覆蓋'OnPaint',從覆蓋的方法中調用'base.OnPaint',然後在想要變白的黑色像素上繪製白色。 – adv12
你需要做的是創建一個自定義的WInForm來擴展DateTimePicker的行爲。這是最乾淨的解決方案,這裏是一個教程:http://devblog.antongochev.net/2008/07/07/create-custom-ui-appearance-for-winforms-controls-part-1/ – Nico
@Niko我不認爲DTP允許外觀定製(它是圍繞Windows公共控制的包裝,可以進行所有繪畫等)。 –