2011年9月14日 星期三

#VB 在 gridview row 行頭上,添加訊息 & GridView 變色 閃爍

'再來就是看能不能讓改變顏色去在另一個 thread 上面跑
發現說移動的時候,下方的時間會停頓

再看看

========================================


dataGridView 闪烁 和 listview 闪烁 的解决办法。


可以透過建構子寫入 setstyle
但這個要自訂gridview 才可以做到

看有沒有辦法直接將預設gridview寫入 setstyle
沒辦法,他是 protected 
一定要透過繼承去 override

大翻修...


可能會需要多寫幾個不一樣的gridview class
來繼承
大致上應該把外面的gridview事件拉進去改成 自訂就好


需要注意的是
因為有分頁
當跳下一頁
如果該分頁資料筆數 比 前分頁所記錄的 RowindexSave 還要小
在判斷部分將會出錯

目前作法是在每次換分頁,將該變數初始化,不過也就要宣告成 public

在大致上注意遺下右鍵選單的東西

        'constructor
        Public Sub New()
            SetStyle(ControlStyles.DoubleBuffer Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint, True)
            UpdateStyles()
        End Sub


==========================================================
'希望透過重繪
做到 row 換色,不造成grid閃爍


將變色改寫入到 mouseMove
去偵測滑鼠位置
只改變當下 row 的顏色


http://topic.csdn.net/u/20070319/14/59dde966-1b66-4b26-8479-def76481c872.html

Private RowindexSave As Integer
  Private ColorSave As Color


  Private Sub dataGridView1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dataGridView1.MouseMove
  ht = dataGridView1.HitTest(e.X, e.Y)
  If (ht.Type = DataGridViewHitTestType.Cell) Then
  If (ht.RowIndex <> RowindexSave) Then
  dataGridView1.Rows(RowindexSave).DefaultCellStyle.BackColor = ColorSave
  ColorSave = dataGridView1.Rows(ht.RowIndex).DefaultCellStyle.BackColor
  dataGridView1.Rows(ht.RowIndex).DefaultCellStyle.BackColor = Color.FromArgb(255, 100, 192)
  RowindexSave = ht.RowIndex
  End If

  End If

  End Sub



=======================================================

DataGridView重绘行头(RowHeader)






http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/255b553d-01a3-4082-a3df-ae000ea1104e/


'做到每個 row 行頭 加上 行號 (第幾筆) 的功能
發現只會作用在畫面上的GridView


因為有分頁的關係

每次換頁面,就會重新計算行號

目前帶入分頁樹下去計算

沒有留言:

張貼留言