我想知道是否有一种方法来创建控件的模板并将它们应用于特定的控件。下面的函数对控件(GridView和Listbox)进行预定义设置,并将其应用于主窗体中的控件。问题是:如何将模板应用于Forms中的控件?
- 它无法在其他形式下进行控制。
- 我无法指定它适用于哪些控件。
我确定有更好的方法,但我猜我的搜索结果比我的编程技巧还糟糕。
public void SettingControls()
{
List<Control> lstControls = GetAllControls(this.Controls);
//DataGridView
DataGridViewCellStyle style;
style = new DataGridViewCellStyle();
style.Alignment = System.Windows.Forms.DataGridViewContentAlignment.BottomCenter;
style.BackColor = System.Drawing.Color.GhostWhite;
style.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
style.ForeColor = System.Drawing.Color.Black;
style.SelectionBackColor = System.Drawing.SystemColors.Highlight;
style.SelectionForeColor = System.Drawing.Color.Navy;
style.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
DataGridViewAdvancedBorderStyle borderStyle;
borderStyle = new DataGridViewAdvancedBorderStyle();
borderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.OutsetDouble;
foreach (Control control in lstControls)
{
//DataGridView
if (control is DataGridView)
{
DataGridView dgv = ((DataGridView)control);
dgv.Dock = DockStyle.Fill;
dgv.AutoGenerateColumns = true;
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
dgv.Dock = DockStyle.Fill;
dgv.DefaultCellStyle.BackColor = Color.Bisque;
dgv.BorderStyle = BorderStyle.FixedSingle;
dgv.BackgroundColor = Color.GhostWhite;
dgv.DefaultCellStyle = style;
}
//ListBox
if (control is ListBox)
{
ListBox lb = ((ListBox)control);
lb.MeasureItem += new MeasureItemEventHandler(lb_MeasureItem);
lb.DrawItem += new DrawItemEventHandler(lb_DrawItem);
}
}
}
这将如何工作的WinForms应用程序? – 2012-01-12 01:46:28
@ M.Babcock:我意识到这是winforms,只要我保存。我已经修复了答案,以显示winforms的正确响应。 – 2012-01-12 01:52:14
我从来没有想过继承会派上用场。谢谢。 – 2012-01-12 01:55:23