DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■35031 / inTopicNo.1)  データグリッドビューの特定の列ヘッダの色
  
□投稿者/ Iraquser 一般人(3回)-(2022/04/19(Tue) 08:44:23)
  • アイコン環境/言語:[Win10 VS2019] 
    分類:[.NET] 

    2022/04/19(Tue) 08:45:19 編集(投稿者)

    いつもお世話になっております。
    データグリッドビューの特定列の列ヘッダの背景色(BackColor)を他の列
    の列ヘッダと別の色にしたいとの要望を顧客から頂いております。例え
    ば、先頭(左端)の列ヘッダだけグレーで他の列ヘッダは白としたいっ
    て事です。全列ヘッダの背景色を変更する方法については
    ColumnHeaderDefaultCellStyleプロパティで変更できる事は知っていま
    すが、特定の列だけ列ヘッダの背景色を変更する方法は見つかりません
    でした。最悪、列ヘッダの位置にラベルを被せて背景色を変えたように
    見せる事はできますが、顧客との間に「あまりイレギュラーな方法を使
    わない」との約束があり躊躇しています。
マルチポストを報告
違反を報告
引用返信 削除キー/
■35032 / inTopicNo.2)  Re[1]: データグリッドビューの特定の列ヘッダの色
□投稿者/ 魔界の仮面弁士 大御所(1420回)-(2022/04/19(Tue) 09:45:44)
  • アイコンNo35031に返信(Iraquserさんの記事)
    > ColumnHeaderDefaultCellStyleプロパティで変更できる事は知っていますが
    ColumnHeadersDefaultCellStyle の間違いかな?

    > 特定の列だけ列ヘッダの背景色を変更する方法は見つかりませんでした。
    あれ、ここのサイトでも説明があったはずですけれどね。

    セルのスタイルを設定するためのプロパティは複数存在し、
    それらはカスケーディング(重ね合わせ)で決定されます。
    https://dobon.net/vb/dotnet/datagridview/cellstyle.html#section6
    https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control

    カスケーディングスタイルは、個々のセルに割り当てられた物が最も強いです。
    (オーナードローされるセルの場合は、独自描画がそれ以上に強い)

    たとえば、各スタイルの BackColor プロパティなら、
    Color.Empty が設定されているスタイルの階層は無視されて、
    上位階層のスタイルが持つ BackColor が採用されます。

    各スタイルの Font プロパティなら、null 設定されている場合は
    無視されて、上位階層のスタイルの Font に委ねられます。


    public partial class Form1 : Form
    {
      DataGridView dgv;
      public Form1()
      {
        InitializeComponent();
        Padding = new Padding(6);
        Controls.Add(dgv = new DataGridView { Dock = DockStyle.Fill });
        dgv.AllowUserToAddRows = dgv.RowHeadersVisible = dgv.AllowUserToResizeRows = false;
        dgv.EditMode = DataGridViewEditMode.EditOnEnter;
        dgv.ColumnCount = 7;
        dgv.RowCount = 5;
        dgv.DefaultCellStyle.SelectionBackColor = dgv.DefaultCellStyle.BackColor;
        dgv.DefaultCellStyle.SelectionForeColor = dgv.DefaultCellStyle.ForeColor;
        dgv.EnableHeadersVisualStyles = false;
        //dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Empty;
        dgv.Columns[0].HeaderCell.Style.BackColor = Color.Crimson;
        dgv.Columns[6].HeaderCell.Style.BackColor = Color.LightSeaGreen;
        foreach(DataGridViewColumn c in dgv.Columns)
        {
          c.HeaderText = ((DayOfWeek)c.Index).ToString();
        }
      }
    }
違反を報告
引用返信 削除キー/
■35033 / inTopicNo.3)  Re[2]: データグリッドビューの特定の列ヘッダの色
□投稿者/ Iraquser 一般人(4回)-(2022/04/19(Tue) 11:45:11)
  • アイコンNo35032に返信(魔界の仮面弁士さんの記事)
    魔界の仮面弁士さん、返信ありがとうございます。
    列ごとに HeaderCell.Style.BackColor を指定し、EnableHeadersVisualStyles
    を False にする事で解決できました。
解決み!
違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -