コントロールのテンプレートを作成し、特定のコントロールのみに適用する方法があるのだろうかと思います。以下の関数は、コントロール(GridViewとListbox)の事前定義された設定を行い、それをメインフォームにあるコントロールに適用します。問題は次のとおりです。フォームのコントロールにテンプレートを適用する方法は?
- 他の形式のコントロールでは機能しません。
- 適用するコントロールを指定することはできません。
私は良い方法があると確信していますが、私のグーグルは私のプログラミングスキルより悪いと思います。
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のアプリで、この作品? –
@ M.Babcock:私がsaveを押すとすぐにwinformsであることに気付きました。私はwinformsに対する正しい応答を示す答えを修正しました。 –
私は決して継承が便利になるとは思わなかった。ありがとうございました。 –