我正在尝试在DataGridView
中实现excel之类的功能。因此:
因此,对于第三个要求,我将SelectionMode
设置为CellSelect
。对于列选择,我选择了列中的所有单元格,但是当我尝试打印SelectedColumns
时,它打印为零。看来我也必须选择列标题。我不知道如何以编程方式选择列标题。所需的代码如下。有人可以告诉我如何实现吗?
private void dataGridViewFileData_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
dataGridViewFileData.MultiSelect = true;
dataGridViewFileData.SelectionMode = DataGridViewSelectionMode.CellSelect;
for (int i = 0; i < dataGridViewFileData.Rows.Count; ++i)
dataGridViewFileData.Rows[i].Cells[0].Selected = true;
MessageBox.Show("Selected columns:" + dataGridViewFileData.SelectedColumns.Count.ToString());
}
您可以将SelectionMode
设置为SelectionMode
,然后对单击的单元格的行索引和列索引进行CellSelect
处理,并使用代码选择该单元格,全行或全列或所有单元格。
示例-通过单元格选择,列选择,行选择选择单元格
CellSelect
注由于选择模式为CellClick
,因此所选列或所选行为空,并且由于任何原因要跟踪所选列或所选行,则需要手动对其进行跟踪,以进行视觉反馈关于选择,您需要设置标题的颜色或对其进行绘画。
CellClick
也许您可以尝试遍历DataGridView并检查是否已选择列中的所有单元格。然后定义一个private async void Form1_Load(object sender, EventArgs e)
{
dataGridView1.ColumnCount = 3;
dataGridView1.RowCount = 3;
dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect;
dataGridView1.CellClick += DataGridView1_CellClick;
}
private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.ClearSelection();
if (e.ColumnIndex == -1 && e.RowIndex == -1)
dataGridView1.SelectAll();
else if (e.ColumnIndex == -1 && e.RowIndex > -1)
foreach (DataGridViewCell cell in dataGridView1.Rows[e.RowIndex].Cells)
cell.Selected = true;
else if (e.ColumnIndex > -1 && e.RowIndex == -1)
foreach (DataGridViewRow row in dataGridView1.Rows)
row.Cells[e.ColumnIndex].Selected = true;
else
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = true;
}
来存储这些过滤的列。
CellSelect