Hey,und zwar habe ich eine eigene Textbox geschrieben, nur leider funktioniert dasKeyDown Event irgendwie nicht. KeyPreview ist bei der WinForm auf True gestellt.Das KeyDown Event frage ich so ab:
Kann mir da jemand was zu sagen?Code von der Textbox:
C#-Quellcode
- [DefaultEvent("TextChanged")]public class MangoETextBox : Control
- {
- private TextBox tB = new TextBox();
- #region "Control Help - Properties & Flicker Control"
- private bool _passmask = false;
- public bool UseSystemPasswordChar
- {
- get {return _passmask;}
- set
- {
- if (value.Equals(_passmask)) return;
- tB.UseSystemPasswordChar = UseSystemPasswordChar;
- _passmask = value;
- this.Invalidate();
- }
- }
- private int _maxchars = 32767;
- public int MaxLength
- {
- get {return _maxchars;}
- set
- {
- if (value == _maxchars) return;
- _maxchars = value;
- tB.MaxLength = MaxLength;
- this.Invalidate();
- }
- }
- private HorizontalAlignment _align;
- public HorizontalAlignment TextAlignment
- {
- get {return _align;}
- set
- {
- if (value.Equals(_align)) return;
- _align = value;
- this.Invalidate();
- }
- }
- protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs pevent) {}
- protected override void OnTextChanged(System.EventArgs e)
- {
- base.OnTextChanged(e);
- tB.Text = Text;
- this.Invalidate();
- }
- protected override void OnBackColorChanged(System.EventArgs e)
- {
- base.OnBackColorChanged(e);
- tB.BackColor = Color.White;
- this.Invalidate();
- }
- protected override void OnForeColorChanged(System.EventArgs e)
- {
- base.OnForeColorChanged(e);
- tB.ForeColor = ForeColor;
- this.Invalidate();
- }
- protected override void OnFontChanged(System.EventArgs e)
- {
- base.OnFontChanged(e);
- tB.Font = Font;
- }
- protected override void OnGotFocus(System.EventArgs e)
- {
- base.OnGotFocus(e);
- tB.Focus();
- }
- protected override void OnKeyDown(KeyEventArgs e)
- {
- base.OnKeyDown(e);
- }
- public void TextBox_TextChanged(object sender, EventArgs e) { this.Text = tB.Text; }
- public void NewTextBox()
- {
- var _with1 = tB;
- _with1.Multiline = false;
- _with1.ForeColor = ForeColor;
- _with1.BackColor = Color.White;
- _with1.Text = String.Empty;
- _with1.TextAlign = HorizontalAlignment.Center;
- _with1.BorderStyle = BorderStyle.None;
- _with1.Location = new Point(5, 4);
- _with1.Font = new Font("Trebuchet MS", 8.25f, FontStyle.Bold);
- _with1.Size = new Size(Width - 10, Height - 11);
- _with1.UseSystemPasswordChar = UseSystemPasswordChar;
- _with1.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
- this.Controls.Add(_with1);
- }
- #endregion
- public MangoETextBox() : base()
- {
- this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor | ControlStyles.FixedHeight, true);
- this.UpdateStyles();
- this.BackColor = Color.White;
- this.ForeColor = Color.FromArgb(102, 102, 102);
- this.Size = new Size(135, 35);
- NewTextBox();
- Text = string.Empty;
- }
- protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
- {
- Graphics G = e.Graphics;
- Rectangle ClientRectangle = new Rectangle(0, 0, Width - 1, Height - 1);
- Height = tB.Height + 11;
- Font drawFont = new Font("Tahoma", 9, FontStyle.Regular);
- var _with2 = tB;
- _with2.Width = Width - 12;
- _with2.ForeColor = Color.FromArgb(102, 102, 102);
- _with2.Font = drawFont;
- _with2.TextAlign = TextAlignment;
- _with2.UseSystemPasswordChar = UseSystemPasswordChar;
- G.Clear(BackColor);
- G.SmoothingMode = SmoothingMode.HighQuality;
- G.CompositingQuality = CompositingQuality.HighQuality;
- G.FillRectangle(new SolidBrush(Color.White), ClientRectangle);
- G.DrawPath(new Pen(Color.FromArgb(0, 191, 255)), Draw.RoundRectF(new Rectangle(1, 1, Width - 3, Height - 3), 1));
- G.DrawPath(new Pen(Color.FromArgb(0, 191, 255)), Draw.RoundRectF(new Rectangle(1, 1, Width - 3, Height - 3), 2));
- G.DrawPath(new Pen(Color.FromArgb(16, 78, 139)), Draw.RoundRectF(new Rectangle(0, 0, Width - 1, Height - 1), 2));
- G.DrawPath(new Pen(Color.FromArgb(16, 78, 139)), Draw.RoundRectF(new Rectangle(0, 0, Width - 1, Height - 1), 3));
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- // Objekte disposen
- }
- base.Dispose(disposing);
- }
- }