Ich versuche ein maskiertes Textfeld zu erstellen, um eine Rahmenfarbe zu haben.Wie zeichne Rand für MaskedTextBox mit benutzerdefinierten Farbe?
ich diesen Code unten versucht, es zu erreichen:
public class MaskedTextBoxWithBorder : UserControl
{
MaskedTextBox maskedtextBox;
public MaskedTextBoxWithBorder()
{
maskedtextBox = new MaskedTextBox()
{
BorderStyle = BorderStyle.FixedSingle,
Location = new Point(-1, -1),
Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right
};
Control container = new ContainerControl()
{
Dock = DockStyle.Fill,
Padding = new Padding(-1)
};
container.Controls.Add(maskedtextBox);
this.Controls.Add(container);
DefaultBorderColor = SystemColors.ControlDark;
FocusedBorderColor = Color.Red;
BackColor = DefaultBorderColor;
Padding = new Padding(1);
Size = maskedtextBox.Size;
}
public Color DefaultBorderColor { get; set; }
public Color FocusedBorderColor { get; set; }
public override string Text
{
get
{
return maskedtextBox.Text;
}
set
{
maskedtextBox.Text = value;
}
}
protected override void OnEnter(EventArgs e)
{
BackColor = FocusedBorderColor;
base.OnEnter(e);
}
protected override void OnLeave(EventArgs e)
{
BackColor = DefaultBorderColor;
base.OnLeave(e);
}
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
{
base.SetBoundsCore(x, y, width, maskedtextBox.PreferredHeight, specified);
}
}
Aber das Problem ist es nicht, die alle Funktionen des maskierten Textfeld hat wie Maskentyp Einstellung usw.
Also änderte ich meine Code wie folgt:
Jetzt habe ich alle Funktionen der maskierten Textbox, aber Randfarben sind nicht betroffen.
Gibt es eine Möglichkeit, Maskierte Textbox zu erweitern, um Rahmenstil zu erhalten, ohne Features zu verlieren, so etwas, was nicht möglich ist.
public class MaskedTextBoxWithBorder : UserControl, MaskedTestBox
Sie müssen nicht, dass die Container-Steuerelement. Das UserControl ist bereits ein Container-Steuerelement. – LarsTech