我有下面的DataGridView,我需要根据一些文件的收据检查单元格,我正在寻找最好的方法来做到这一点,我认为可以通过名称在单元格中插入一个值列的行和行的名称
职位是
如果我想标记位置0,0我会寻找 31 - SEGUROS (列名称)和 01 (行名称)然后它将被标记为单元格0,0
有可能吗?
答案 0 :(得分:0)
DataGridView有一个CurrentCell属性,包含RowIndex和ColumnIndex。
还有CellEnter事件,其中DataGridViewCellEventArgs包含RowIndex和ColumnIndex。
Rows和Columns属性具有重载以接受索引或名称。但是,列名称和列标题之间存在差异。在您的情况下" 31 - SEGUROS "是列的标题,而不是它的名称。每个Column对象都有一个HeaderText属性。
如果未选择列或行,则其索引将为-1。
答案 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")
类似的功能可以逐行获取。虽然使用行名称非常罕见,但这是可能的。它也可以修改为匹配标题中的文本,但名称更安全。