【发布时间】:2017-05-30 15:41:47
【问题描述】:
我目前正在使用 WinForms 中的 C# 在 Visual Studio 2015 中创建一个项目;我使用“工具箱项目”一词来指代 dateTimePickers、文本框、标签等。这是一个非常大的项目,如果我可以拖放对象并且它们已经具有格式,它将为我节省大量时间;例如 datetimePicker 自定义格式、文本框对齐等。
问题是我需要自定义这些对象的一些属性。到目前为止,我有这段代码可以让我更改一些可覆盖的属性。
public partial class MoneyBox : TextBox
{
public override Color BackColor
{
get { return Color.Azure;}
set { base.BackColor = value; }
}
}
但对于其他属性,我不能这样做。此外,我无法从已格式化的对象继承,因为该对象尚未初始化,并且在继承时我得到 null。我还尝试自定义初始化组件和对象的绘制事件,但由于某种原因,这些更改没有显示在对象上。
public partial class DateTimePick : DateTimePicker
{
public void InitializeComponent()
{
InitializeComponent();
this.Format = DateTimePickerFormat.Custom;
this.CustomFormat = "dd/MM/yyyy";
}
}
有什么想法吗?
提前致谢!
【问题讨论】:
-
复制粘贴工具箱项应该保留设置的属性。
-
它只是不需要属性是可覆盖的。使用
new关键字重新定义属性也很有效,设计师对此没有任何问题。反射允许它总是找到正确的。当然,您可以随时添加自己的。 InitializeComponent() 通常只有在 Form 或 UserControl 是基类时才有意义。 -
@HansPassant 并没有真正理解你的意思。
-
在大多数情况下,您可以在控件的构造函数中初始化属性。对于像
Text属性这样的情况,当您将控件放到设计图面上时,值将设置在控件的Designer的InitializeNewComponent方法中。
标签: c# .net winforms visual-studio windows-forms-designer