2017-10-11 68 views
0

我有DataGridView下面,我需要根據收到的一些文件檢查單元格,我正在尋找最好的方法來做到這一點,我認爲這將是可能的插入由列的名稱,並在單元格中值的行通過傳遞列和行名填充datagridview

enter image description here

的位置是

enter image description here

如果我想紀念位置0,0我會的名稱看f或31 - SEGUROS(列的名稱),並(行的名稱),然後它會被標記細胞0,0

這是可能的嗎?

回答

0

DataGridView具有包含RowIndex和ColumnIndex的CurrentCell屬性。

還有CellEnter事件,其中DataGridViewCellEventArgs包含RowIndex和ColumnIndex。

存在具有重載接受索引或名稱的行和列屬性。但是,列的名稱和列標題之間存在差異。在你的情況下,「31 - SEGUROS」是列的標題,而不是它的名稱。每個Column對象都有一個HeaderText屬性。

如果沒有選擇列或行,其索引將爲-1。

0

你在尋找行列索引嗎?我看了你的問題,三次,還是它看起來像它...

VB.NET:

Dim MyVal = 1234 
    Dim ColIdx = 5 
    Dim RowIdx = 10 
    Me.DataGridView1.Rows(RowIdx).Cells(ColIdx).Value = MyVal 

C#:

Dynamic MyVal = 1234; 
    Dynamic ColIdx = 5; 
    Dynamic RowIdx = 10; 
    this.DataGridView1.Rows(RowIdx).Cells(ColIdx).Value = MyVal; 

您還可以通過他們的名字解決行和單元格,只需將他們的名字放在雙引號中即可。

按列名獲取列索引(在標題不是文本):

VB.NET:

Private Function GetColIdx(MyStringName As String) 
    Dim ColIdx As Int16 
    For ic = 0 To Me.DataGridView1.Columns.Count - 1 
     Dim dc As DataGridViewColumn = Me.DataGridView1.Rows(ic) 
     If dc.Name = MyStringName Then 
      ColIdx = ic 
      Exit For 
     End If 
    Next 
    Return ColIdx 
End Function 

C#:

Private Object GetColIdx(String MyStringName) 
{ 
    Int16 ColIdx = default(Int16); 
    For (ic = 0; ic <= this.DataGridView1.Columns.Count - 1; ic++) { 
     DataGridViewColumn dc = this.DataGridView1.Rows(ic); 
     If (dc.Name == MyStringName) { 
      ColIdx = ic; 
      break; 
     } 
    } 
    Return ColIdx; 
} 

要獲得列索引,您只需調用(C#)函數,其名稱爲

GetColIdx("SEGUROS") 

類似的功能可以按名稱獲取行。儘管使用行名很不常見,但這是可能的。它也可以修改爲匹配標題中的文本,但名稱更安全。