[英]Prevent hardcoded values in Winform designer file while using User Controls
我正在尝试包括一个自定义用户控件的日历,该日历选择月份和年份。 在用户控制代码中,我将两个属性(月份和年份)设置为当前月份和年份。
public MonthPicker()
{
InitializeComponent();
m_MonthLabels = new Label[]
{
lblJanuary,
lblFebruary,
lblMarch,
lblApril,
lblMay,
lblJune,
lblJuly,
lblAugust,
lblSeptember,
lblOctober,
lblNovember,
lblDecember
};
m_NotSelected = new Font("Sans Serif", 8.25F, FontStyle.Regular);
m_Selected = new Font("Sans Serif", 8.25F, FontStyle.Bold);
Month = DateTime.Now.Month;
Year = DateTime.Now.Year;
lblYear.Text = Year.ToString();
groupBox2.Visible = false;
groupBox1.Height = 20;
CalendarIsDisplayed = false;
CalendarIsNotChanged = false;
SetMonthLabelSelected(Month);
}
但是,当我将其包含在“应用程序”表单中时,设计人员将采用“月”和“年”的硬编码值。 因此,当月份更改时,它仍显示我的月份更大。
// tsMonthPicker
//
this.tsMonthPicker.BackColor = System.Drawing.SystemColors.Control;
this.tsMonthPicker.CalendarIsDisplayed = false;
this.tsMonthPicker.CalendarIsNotChanged = false;
this.tsMonthPicker.Location = new System.Drawing.Point(104, 14);
this.tsMonthPicker.Margin = new System.Windows.Forms.Padding(0);
this.tsMonthPicker.Month = 1;
this.tsMonthPicker.Name = "tsMonthPicker";
this.tsMonthPicker.Size = new System.Drawing.Size(215, 20);
this.tsMonthPicker.TabIndex = 6;
this.tsMonthPicker.Value = new System.DateTime(2017, 1, 1, 0, 0, 0, 0);
this.tsMonthPicker.Year = 2017;
this.tsMonthPicker.Change += new Time_and_Billing_System.MonthPicker.MonthPickerChangeHandler(this.tsMonthPicker_Changed);
this.tsMonthPicker.Load += new System.EventHandler(this.tsMonthPicker_Load);
如何在用户控件中更改代码,以便表单设计器文件自动采用-
this.tsMonthPicker.Month = System.DateTime.Now.Month;
this.tsMonthPicker.Year = System.DateTime.Now.Year;
将这两行放在Form_Load方法中,以嵌入此MonthPicker的形式。
private void Form1_Load(object sender, EventArgs e)
{
this.tsMonthPicker.Month = System.DateTime.Now.Month;
this.tsMonthPicker.Year = System.DateTime.Now.Year;
}
在对象查看器中,选择“表单”对象后,选择“事件”视图(“闪电”),在列表中找到“加载”,双击该空间,此方法将出现在代码中。
您可以为此使用DesignMode
属性。 您没有声明每次启动应用程序时是否需要默认值Now。 如果是这种情况,则您不需要DesignMode。
public MonthPicker()
{
if (this.DesignMode)
{
//These values are only set when the control is created in design mode
this.tsMonthPicker.Month = System.DateTime.Now.Month;
this.tsMonthPicker.Year = System.DateTime.Now.Year;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.