我想知道是否有一種方法來創建控件的模板並將它們應用於特定的控件。下面的函數對控件(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