Sovrascrivo il metodo OnPaint nell'obiettivo di mettere il colore nella casella di testo di un controllo DateTimePicker e disabilita la digitazione manuale nella casella di testo?Perché DateTimePicker BackColor Disabilita la digitazione manuale?
avete qualche idea per risolvere questo problema?
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; }
}
}
Ho dare maggiori dettagli riguardanti "digitazione manuale": E 'quando si preme TAB e si va sul DateTimePicker. Quindi puoi inserire una nuova data usando la tastiera.
Come quella:
chiamate ogni metodo OnPaint sottoposto a override? Forse dovresti controllare questo metodo per il background painting? https://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaintbackground%28v=vs.110%29.aspx – Icepickle
Cercare di ottenere aiuto da: http://www.codeproject.com/Articles/30660/A-DateTimePicker-with-working-BackColor e http://stackoverflow.com/questions/1595481/datetimepicker-and -userpaint-text-and-button-missing – ehh
Io uso il link da codeproject per fare il mio codice. Cerco solo di dipingere sullo sfondo ma non funziona. – Julien698