获取 DataGridView 控件中所选的单元格、行和列 - Windows Forms

获取 DataGridView 控件中所选的单元格、行和列 - Windows Forms

可以使用相应的属性从 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 控件结合使用

相关文章

撬墙角(gaoH)
365账号限制登录不了

撬墙角(gaoH)

📅 09-02 👁️ 1279
捐 书法字典
365bet体育比分直播

捐 书法字典

📅 07-21 👁️ 7450
《鱼泡泡》提现功能说明介绍
365bet体育比分直播

《鱼泡泡》提现功能说明介绍

📅 09-18 👁️ 1478