可以使用相应的属性从 DataGridView 控件获取所选单元格、行或列:SelectedCells、SelectedRows和 SelectedColumns。 在以下过程中,你将获取所选单元格,并在一个 MessageBox 单元格中显示其行和列索引。
获取 DataGridView 控件中的选定单元格
使用 SelectedCells 属性。
注释
使用 AreAllCellsSelected 方法避免显示可能大量的单元格。
private void selectedCellsButton_Click(object sender, System.EventArgs e)
{
Int32 selectedCellCount =
dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
if (selectedCellCount > 0)
{
if (dataGridView1.AreAllCellsSelected(true))
{
MessageBox.Show("All cells are selected", "Selected Cells");
}
else
{
System.Text.StringBuilder sb =
new System.Text.StringBuilder();
for (int i = 0;
i < selectedCellCount; i++)
{
sb.Append("Row: ");
sb.Append(dataGridView1.SelectedCells[i].RowIndex
.ToString());
sb.Append(", Column: ");
sb.Append(dataGridView1.SelectedCells[i].ColumnIndex
.ToString());
sb.Append(Environment.NewLine);
}
sb.Append("Total: " + selectedCellCount.ToString());
MessageBox.Show(sb.ToString(), "Selected Cells");
}
}
}
Private Sub selectedCellsButton_Click( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles selectedCellsButton.Click
Dim selectedCellCount As Integer = _
dataGridView1.GetCellCount(DataGridViewElementStates.Selected)
If selectedCellCount > 0 Then
If dataGridView1.AreAllCellsSelected(True) Then
MessageBox.Show("All cells are selected", "Selected Cells")
Else
Dim sb As New System.Text.StringBuilder()
Dim i As Integer
For i = 0 To selectedCellCount - 1
sb.Append("Row: ")
sb.Append(dataGridView1.SelectedCells(i).RowIndex _
.ToString())
sb.Append(", Column: ")
sb.Append(dataGridView1.SelectedCells(i).ColumnIndex _
.ToString())
sb.Append(Environment.NewLine)
Next i
sb.Append("Total: " + selectedCellCount.ToString())
MessageBox.Show(sb.ToString(), "Selected Cells")
End If
End If
End Sub
获取 DataGridView 控件中选定的行
使用 SelectedRows 属性。 若要允许用户选择行,必须将 SelectionMode 属性设置为 FullRowSelect 或 RowHeaderSelect。
private void selectedRowsButton_Click(object sender, System.EventArgs e)
{
Int32 selectedRowCount =
dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);
if (selectedRowCount > 0)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < selectedRowCount; i++)
{
sb.Append("Row: ");
sb.Append(dataGridView1.SelectedRows[i].Index.ToString());
sb.Append(Environment.NewLine);
}
sb.Append("Total: " + selectedRowCount.ToString());
MessageBox.Show(sb.ToString(), "Selected Rows");
}
}
Private Sub selectedRowsButton_Click( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles selectedRowsButton.Click
Dim selectedRowCount As Integer = _
dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)
If selectedRowCount > 0 Then
Dim sb As New System.Text.StringBuilder()
Dim i As Integer
For i = 0 To selectedRowCount - 1
sb.Append("Row: ")
sb.Append(dataGridView1.SelectedRows(i).Index.ToString())
sb.Append(Environment.NewLine)
Next i
sb.Append("Total: " + selectedRowCount.ToString())
MessageBox.Show(sb.ToString(), "Selected Rows")
End If
End Sub
获取 DataGridView 控件中的选定列
使用 SelectedColumns 属性。 若要使用户能够选择列,必须将 SelectionMode 属性设置为 FullColumnSelect 或 ColumnHeaderSelect。
private void selectedColumnsButton_Click(object sender, System.EventArgs e)
{
Int32 selectedColumnCount = dataGridView1.Columns
.GetColumnCount(DataGridViewElementStates.Selected);
if (selectedColumnCount > 0)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < selectedColumnCount; i++)
{
sb.Append("Column: ");
sb.Append(dataGridView1.SelectedColumns[i].Index
.ToString());
sb.Append(Environment.NewLine);
}
sb.Append("Total: " + selectedColumnCount.ToString());
MessageBox.Show(sb.ToString(), "Selected Columns");
}
}
Private Sub selectedColumnsButton_Click( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles selectedColumnsButton.Click
Dim selectedColumnCount As Integer = dataGridView1.Columns _
.GetColumnCount(DataGridViewElementStates.Selected)
If selectedColumnCount > 0 Then
Dim sb As New System.Text.StringBuilder()
Dim i As Integer
For i = 0 To selectedColumnCount - 1
sb.Append("Column: ")
sb.Append(dataGridView1.SelectedColumns(i).Index.ToString())
sb.Append(Environment.NewLine)
Next i
sb.Append("Total: " + selectedColumnCount.ToString())
MessageBox.Show(sb.ToString(), "Selected Columns")
End If
End Sub
编译代码
此示例需要:
Button 控件名为 selectedCellsButton、selectedRowsButton和 selectedColumnsButton,每个控件则附有 Click 事件的处理程序。
名为 DataGridView 的 dataGridView1 控件。
对 System、System.Windows.Forms 和 System.Text 程序集的引用。
可靠的编程
选择大量单元格、行或列时,本主题中描述的集合无法有效执行。 有关将这些集合与大量数据一起使用的详细信息,请参阅缩放 Windows 窗体 DataGridView 控件的最佳做法。
另请参阅
DataGridView
SelectionMode
AreAllCellsSelected
SelectedCells
SelectedRows
SelectedColumns
将选择模式和剪贴板与 Windows 窗体 DataGridView 控件结合使用