Ich überschreibe OnPaint-Methode in dem Ziel, Farbe in das Textfeld eines DateTimePicker Control und deaktivieren Sie die manuelle Eingabe in das Textfeld?Warum DateTimePicker BackColor Manuelle Eingabe deaktivieren?
haben Sie einige Ideen, um dieses Problem zu lösen?
public class BCDateTimePicker : DateTimePicker
{
public BCDateTimePicker()
{
this.SetStyle(ControlStyles.UserPaint, true);
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
Rectangle dropDownRectangle = new Rectangle(ClientRectangle.Width - 20, 0, 20, 20);
Brush bkgBrush;
ComboBoxState visualState;
if (this.Enabled)
{
bkgBrush = new SolidBrush(this.BackColor);
visualState = ComboBoxState.Normal;
}
else
{
bkgBrush = new SolidBrush(this.BackColor);
visualState = ComboBoxState.Disabled;
}
g.FillRectangle(bkgBrush, 0, 0, ClientRectangle.Width, ClientRectangle.Height);
g.DrawString(this.Text, this.Font, Brushes.Black, 0, 2);
ComboBoxRenderer.DrawDropDownButton(g, dropDownRectangle, visualState);
g.Dispose();
bkgBrush.Dispose();
}
[Browsable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override Color BackColor
{
get { return base.BackColor; }
set { base.BackColor = value; }
}
}
Ich gebe mehr Details „Manuelle Eingabe von“ betreffend: Es ist, wenn Sie mit der Tabulatortaste drücken und gehen Sie auf dem Datetimepicker. Dann können Sie mit Ihrer Tastatur ein neues Datum eingeben.
wie folgt aus:
rufen Sie alle die überschriebene OnPaint-Methode? Vielleicht solltest du diese Methode lieber für das Hintergrundbild überprüfen? https://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaintbackground%28v=vs.110%29.aspx – Icepickle
Versuchen Sie, Hilfe zu erhalten von: http://www.codeproject.com/Articles/30660/A-DateTimePicker-with-working-BackColor und http://stackoverflow.com/questions/1595481/datetimepicker-and -userpaint-text-and-button-missing – ehh
Ich benutze den Link von Codeproject, um meinen Code zu machen. Ich versuche nur mit dem Hintergrundbild, aber es funktioniert nicht. – Julien698