Я пытаюсь создать маскированное текстовое поле с цветами границ.Как нарисовать границу для MaskedTextBox с использованием пользовательского цвета?
Я попробовал этот код, приведенный ниже, чтобы достичь этого:
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);
}
}
Но проблема в том, что не имеет все возможности замаскированной текстовое поле, как установка типа маски и т.д.
Так что я изменил мой код:
public class MaskedTextBoxWithBorder : UserControl
Теперь у меня есть все функции текстового поля Masked, но цвета границы не влияют.
Есть ли способ расширить текстовое поле Masked, чтобы получить стиль границы без потери функций, подобных этому, что невозможно.
public class MaskedTextBoxWithBorder : UserControl, MaskedTestBox
Вам не нужно, что контроль контейнера. UserControl уже является элементом управления контейнером. – LarsTech