- PR -

DataGridで下スクロールしてから先頭行に戻ると1行・1列目が反転表示します

1
投稿者投稿内容
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2006-03-01 10:48
お世話さまです。

VB.NET2003のWindowsフォームでの出来事です。

2列からなるDataGridをフォーム上に表示してるのですが、
下スクロールしてから上スクロールすると、先頭行・先頭列
のセルが反転表示されてしまいます。

この反転表示を抑制する方法はないでしょうか?

スクロールイベント内で
DataGrid.UnSelect(0)
のようにしても、”選択”されているワケではないようで、
変化はありませんでした。

ご参考までに、DataGridの関係のありそうなプロパティを記します。

AllowSorting=False
ReadOnly=True
TabStop=False

以上、ご教示のほど宜しくお願い致します。
きよの
常連さん
会議室デビュー日: 2004/02/07
投稿数: 34
投稿日時: 2006-03-01 13:16
抑制する方法は判らないのですが、左上のセルが反転表示されるのは
DataGrid#CurrentCell がデフォルトで 0, 0 になっているからだと思います。

コード:
this.dataGrid1.CurrentCell = new DataGridCell(1, 1);



とすると、2行目の2列目が選択された状態になります。
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2006-03-01 13:47
===>きよの様

早速のレス、ありがとうございます。

なるほど、画面に表示されてない行をSelectさせたりすることで
見かけ上、反転表示を回避できそうですね。

ちなみに、下記のような泥臭いやり方で回避を試みてみました。^^;

Private Sub MyDataGrid_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyDataGrid.Scroll
  Dim i As Integer

  'MyDataGridCtrにはグリッドに表示する全行数がセットされています。
  For i = 0 To MyDataGridCtr - 1
    If MyDataGrid.IsSelected(i) = False Then
      MyDataGrid.Select(i)
      MyDataGrid.UnSelect(i)
      Exit For
    End If
  Next
End Sub

グリット指定されていない行を選択し、直後に非選択にすることで
見かけ上、反転表示はしなくなりました。

スマートではないですよねぇ。^^;
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-01 14:45
引用:

MyDataGrid.Select(i)


は、必要なんでしょうか?

全部はがすのであれば、UnSelect メソッドだけで良いように思えます。
もし、見た目が戻らないという意味であれば、Refresh すれば良いと思いますが、適用されないんだったかな?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2006-03-01 17:53
===>じゃんぬねっと様

こんにちは!

お久しぶりです。^^

ご教示頂いた方法を試してみましたところ、
UnSelectだけで反転表示解除できました。

ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)