我需要的是修改行,不是新增列
时间: 2024-11-30 09:16:23 浏览: 6
如果你希望在 ListBox 控制下的拖动事件中修改 DataGridView 已存在的某一行而不是添加新的一行,你需要稍微调整一下代码。以下是修改后的示例:
首先,在 ListBox 的 `ItemDrag` 事件(拖拽起始时)中记录被选中的项目以及它在 ListBox 中的索引。然后在 `MouseUp` 或 `DragEnd` 事件(拖拽结束时)里,找到对应的 DataGridView 行并更新其内容。
```csharp
// 记录被拖动的项目和它的索引
private void listBox_ItemDrag(object sender, ItemDragEventArgs e)
{
_draggedItem = listBox.SelectedItem as string;
_draggedIndex = listBox.SelectedIndex;
}
private void listBox_MouseUp(object sender, MouseEventArgs e)
{
if (_draggedItem != null && dataGridView.SelectedRows.Count > 0)
{
// 找到对应 DataGridView 行并更新内容
DataGridViewRow dgvRow = dataGridView.SelectedRows[0];
dgvRow.Cells[dgvRow.Cells.Count - 1].Value = _draggedItem; // 假设最后一列是你要替换的目标列
// 清除之前保存的信息
_draggedItem = null;
_draggedIndex = -1;
}
}
// 或者使用 DragEnd 事件
private void listBox_DragEnd(object sender, DragEventArgs e)
{
// ...(同上)
}
```
这里假设你在 DataGridView 的最后一列进行替换操作。如果需要修改其他位置或列,请相应地更改代码中的 `dgvRow.Cells[dgvRow.Cells.Count - 1]`。
阅读全文