【发布时间】:2016-09-09 07:29:04
【问题描述】:
我正在尝试创建一个带有边框颜色的蒙版文本框。
我尝试了下面的代码来实现它:
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 文本框以获取边框样式而不会丢失类似这样的功能,这是不可能的。
public class MaskedTextBoxWithBorder : UserControl, MaskedTestBox
【问题讨论】:
-
你不需要那个容器控件。 UserControl 已经是一个容器控件。
标签: c# winforms maskedtextbox