datagridview拖动列
时间: 2023-08-01 09:06:32 浏览: 90
DataGridView中拖动列可以通过以下步骤实现:
1. 将DataGridView的AllowUserToOrderColumns属性设置为True,允许用户拖动列。
2. 在DataGridView的ColumnHeaderMouseMove事件中处理拖动操作。可以通过以下代码实现:
```csharp
private void dataGridView1_ColumnHeaderMouseMove(object sender, DataGridViewCellMouseEventArgs e)
{
// 判断是否是左键拖动
if (e.Button == MouseButtons.Left)
{
// 开始拖动操作
this.dataGridView1.DoDragDrop(this.dataGridView1.Columns[e.ColumnIndex], DragDropEffects.Move);
}
}
```
3. 在DataGridView的DragOver事件中设置拖动效果。可以通过以下代码实现:
```csharp
private void dataGridView1_DragOver(object sender, DragEventArgs e)
{
// 判断是否拖动列
if (e.Data.GetDataPresent(typeof(DataGridViewColumn)))
{
// 设置拖动效果为移动列
e.Effect = DragDropEffects.Move;
}
}
```
4. 在DataGridView的DragDrop事件中处理拖动完成后的操作。可以通过以下代码实现:
```csharp
private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
// 获取拖动的列
DataGridViewColumn column = (DataGridViewColumn)e.Data.GetData(typeof(DataGridViewColumn));
// 获取鼠标位置
Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));
// 获取目标列的索引
int targetIndex = dataGridView1.HitTest(clientPoint.X, clientPoint.Y).ColumnIndex;
// 移动列
dataGridView1.Columns.Remove(column);
dataGridView1.Columns.Insert(targetIndex, column);
}
```
通过以上步骤,就可以实现DataGridView中拖动列的功能。
阅读全文