Мне интересно, есть ли способ создать шаблоны для элементов управления и применить их только к определенным элементам управления.Приведенная ниже функция устанавливает предварительно заданные настройки для элементов управления (GridView и Listbox) и применяет их к элементам управления, находящимся в основной форме.Проблемы:
- Он не работает с элементами управления в других формах.
- Я не могу указать, к каким элементам управления он применяется.
Я уверен, что есть лучший способ, но я думаю, что мой поиск в Google хуже, чем мой навык программирования.
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);
}
}
}