首先:30%無關緊要。這是一個設計問題。我們也可以說前3個顯示列。首先在DataGridView中顯示30%的列
在我的DataGridView
我使用BackgroundColors
爲Rows
來傳遞用戶的一些信息。
爲了讓用戶在選擇行的同時可以看到此信息,前30%的列應與Back/ForeColor
獲得相同的SelectionBack/ForeColor
。
到目前爲止從未被使用
.cells(0).Style.SelectionBackColor = .cells(0).Style.Backcolor
- (等)的問題。
現在,我補充說,允許用戶重新排序,這使得下面的語句成爲真正的欄功能:
ColumnIndex != DisplayedIndex
。
該聲明爲真使得SelectionBackColor-Changed單元格在行中混合而不在第一列中。它仍然在做這項工作,但看起來很糟糕。
是否有像「DisplayedColumns」集合的順序的.DisplayedIndex
值,我可以用它來調用第一個DisplayedColumns?如果沒有,我怎麼能有效地創造一個我自己的?
編輯:
用戶也可以隱藏特定的列,不爲他無所謂。因此,我們必須要注意的Column.DisplayedIndex
和Column.Visble
得到它用下面的代碼工作:
Try
' calculate what is thirty percent
Dim colcount As Integer = oDic_TabToGridview(TabPage).DisplayedColumnCount(False)
Dim thirtyPercent As Integer = ((colcount/100) * 30)
' Recolor the first 30 % of the Columns
Dim i As Integer = 0
Dim lastCol As DataGridViewColumn = oDic_TabToGridview(TabPage).Columns.GetFirstColumn(DataGridViewElementStates.Visible)
While i < thirtyPercent
.Cells(lastCol.Index).Style.SelectionBackColor = oCol(row.Item("Color_ID") - 1)
.Cells(lastCol.Index).Style.SelectionForeColor = Color.Black
lastCol = oDic_TabToGridview(TabPage).Columns.GetNextColumn(lastCol, DataGridViewElementStates.Visible, DataGridViewElementStates.None)
i += 1
End While
Catch ex As Exception
MsgBox(ex.Message & vbNewLine & ex.StackTrace)
End Try
幾乎是最好的答案我曾經在這個平臺上!幫助我的關鍵字是'DataGridView.Columns.GetNextColumn(...)'。我不知道這個功能,但我相信這對未來的項目非常有幫助。謝謝! – Luke
很高興幫助!我發現研究很有趣。 – OhBeWise