C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DatagridViewのフォーカス枠


(過去ログ 77 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■45328 / inTopicNo.1)  DatagridViewのフォーカス枠
  
□投稿者/ hs (175回)-(2010/01/10(Sun) 12:45:58)

分類:[VB.NET/VB2005 以降] 

VS2008 VB

いつもお世話になってます。

DatagridViewのフォーカス枠についてですが、SelectionMode を FullRowSelection に設定している時、
行全体にフォーカス枠を表示させたいのですが、方法はあるのでしょうか?

通常
 .........._______________________________________________
 . . | |
 .........._____________|_________________________________|
   ↑
 この部分に枠

やりたいこと

 ..........................................................
 : | | :
 .........|.............|.................................:

この ... 部分の様に行全体にフォーカス枠を付けたいです。
よろしくお願いします。


引用返信 編集キー/
■45334 / inTopicNo.2)  Re[1]: DatagridViewのフォーカス枠
□投稿者/ 魔界の仮面弁士 (1445回)-(2010/01/10(Sun) 14:28:51)
No45328 (hs さん) に返信
> 通常
>  .........._______________________________________________
>  .        .             |                                 |
>  .........._____________|_________________________________|
>    ↑
>  この部分に枠
> 
> やりたいこと
>  ..........................................................
>  :        |             |                                 :
>  .........|.............|.................................:

本来のフォーカス枠を消しておき、代わりに自前で描画してみては如何でしょう。

Private Sub DataGridView1_RowPostPaint(sender As DataGridView, _
        e As DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
    'カレント行のみフォーカス枠を表示
    If e.RowIndex >= 0 AndAlso sender.CurrentCellAddress.Y = e.RowIndex Then
        Dim max = sender.ColumnCount - 1
        Dim lt = sender.GetCellDisplayRectangle(0, e.RowIndex, False)
        Dim rb = sender.GetCellDisplayRectangle(max, e.RowIndex, False)
        Dim rect = Rectangle.Union(lt, rb)
        ControlPaint.DrawFocusRectangle(e.Graphics, rect)
    End If
End Sub

Private Sub DataGridView1_RowPrePaint(sender As DataGridView, _
        e As DataGridViewRowPrePaintEventArgs) Handles DataGridView1.RowPrePaint
    'フォーカス枠を描画しない
    e.PaintParts = e.PaintParts And Not DataGridViewPaintParts.Focus
End Sub


なお上記では、水平スクロール時の描画処理が考慮されていません。

引用返信 編集キー/
■45343 / inTopicNo.3)  Re[2]: DatagridViewのフォーカス枠
□投稿者/ hs (177回)-(2010/01/10(Sun) 16:55:25)
No45334 (魔界の仮面弁士 さん) に返信

いつもありがとうございます。
思ったとおりのフォーカス枠の表示が出来ました。

また何かあったときはよろしくお願いします。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -