私の Winform 4.5 アプリではDataGridView
、リンク列として最初の列があります。選択したリンクセルのリンク色を白にしたいと思います。デフォルトでは、選択された行 (またはセル) の背景色は青で、ForeColor
すべてのリンクも青であるため、ユーザーが行 (またはリンク セル) を選択すると、リンクのテキストは判読できません。以下のコードを書いてみましたが、選択したリンクセルのリンク色が全く変わりません。
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
foreach (DataGridViewLinkCell cell in ((DataGridView)sender).SelectedCells)
{
if (cell.ColumnIndex == 0)
{
if (cell.Selected)
{
cell.Style = new DataGridViewCellStyle()
{
SelectionForeColor = SystemColors.HighlightText
};
}
}
}
}
次に、上記のコードを次のように変更しました。ただし、すべてのリンクのリンクの色が白に変更されます。これらのリンクの背景色も白であるため、選択されていないリンク セルは読み取れなくなります。
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
foreach (DataGridViewLinkCell cell in ((DataGridView)sender).SelectedCells)
{
if (cell.ColumnIndex == 0)
{
if (cell.Selected)
{
cell.LinkColor = SystemColors.HighlightText;
}
}
}
}
foreach ループ内にブレークポイントを設定し、リンク セルを選択して、両方のコードをテストしました。コードが foreach ループの反復を 1 回だけ正しく実行していることに気付きました。さらに、私はのデフォルト設定に変更を加えていませんDataGridViewLinkColumn
編集
デフォルトではDataGridView
、行選択で次のように表示されます。2 番目の列のセルはForeColor
白に変わりますが、最初の列のセルは変わりません。
行選択で次のようにしたい: