DOBON.NETプログラミング道掲示板
(現在 過去ログ5 を表示中)
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
[
最新記事及び返信フォームをトピックトップへ
]
[ トピック内全3記事(1-3 表示) ] <<
0
>>
■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/
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-