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

DataGridViewセル選択時の枠線

環境/言語:[Windows7 C#VS2005 FW2.0]
分類:[.NET]

毎度参考にさせて頂いています。

DataGridViewのセル選択を行った際に、枠線が破線で表示されて
選択状態が分かるように表示されるのですが、
同じアプリをWindows7で動かすと、破線が表示されなくなりました。

Windows7でも選択状態が分かるようにしたいのですが、何か設定が
いるのでしょうか。
  • 題名: Re[1]: DataGridViewセル選択時の枠線
  • 著者: 魔界の仮面弁士
  • 日時: 2012/12/28 12:55:02
  • ID: 31201
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No31200に返信(よしおさんの記事)
コントロール パネル
 \コンピューターの簡単操作
  \コンピューターの簡単操作センター
   \キーボードを使いやすくします

にて、『ショートカットキーとアクセスキーに下線を表示します』を
on にしてみてください。破線が表示されるようになるはずです。


ただしこの設定を施すと、他のアプリの「メニュー」に対しても、
アクセスキーの下に常に下線が表示されるようになるのでご注意ください。
(たとえば、「ファイル(F)」の F の下に下線が引かれるなど)


上記設定が off の場合は、DataGridView やボタンなどのフォーカス枠は
付きませんし、ショートカットキー/アクセスキーの下線も表示されません。
ただし、Ctrl + O で「ファイルを開く」のダイアログを表示させたり、
Alt キーでメニューを開いたりした場合には、上記設定が off でも
フォーカス枠や下線が表示されます。


ちなみにこの設定は、Windows 2000 や XP にも存在します。初期値は逆ですけれどね。
http://www.gizcollabo.jp/vbtomo/boards/vbchoshoqa.php?do=spread&num=8206



もし、設定によらずフォーカス枠が表示されるようにしたいなら、
セルの内容を自前で描画するという選択肢もあります。

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    Point p = ((DataGridView)sender).CurrentCellAddress;
    bool hasFocus = p == new Point(e.ColumnIndex, e.RowIndex);
    if (hasFocus)
    {
        e.Paint(e.CellBounds, e.PaintParts & ~DataGridViewPaintParts.Focus);
        ControlPaint.DrawFocusRectangle(e.Graphics, e.CellBounds);
        e.Handled = true;
    }
}

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