c# - 拖放时从一个 ListView 拖放到另一个,文本更改
问题描述
当我尝试将一个项目从一个项目拖到另一个项目listview
时,丢弃时的数据说 System.Windows.Forms.ListView+SelectedListViewItemCollection
,但我让它添加了文本ToString
。代码:
private void CompletedList_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void ShipList_MouseDown(object sender, MouseEventArgs e)
{
CompletedList.DoDragDrop(ShipList.SelectedItems.ToString(), DragDropEffects.Copy);
}
private void CompletedList_DragDrop(Object sender, DragEventArgs e)
{
CompletedList.Items.Add(e.Data.GetData(DataFormats.Text).ToString());
//ShipList.Items.Remove(e.Data.GetData())
}
ps 我知道已ShipList.Items.Remove
被注释掉,我仍在研究如何在将数据放入第二个框中时从第一个框中删除数据
解决方案
下面的代码是一个简单的例子。它不适用于名称重复或名称中包含逗号的列表项。它应该让您知道如何开始。
public Form1()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
ShipList.Items.Add($"My Item {i}");
}
private void CompletedList_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void CompletedList_DragDrop(object sender, DragEventArgs e)
{
var listOfItems = e.Data.GetData(DataFormats.Text).ToString().Split(new char[] { ',' });
foreach (string itemText in listOfItems)
{
CompletedList.Items.Add(itemText);
foreach (ListViewItem shipItem in ShipList.Items)
{
if (shipItem.Text == itemText)
{
ShipList.Items.Remove(shipItem);
break;
}
}
}
}
private void ShipList_ItemDrag(object sender, ItemDragEventArgs e)
{
if (ShipList.SelectedItems.Count == 0) return;
var selectedListNames = new List<string>();
foreach (ListViewItem item in ShipList.SelectedItems)
selectedListNames.Add(item.Text);
CompletedList.DoDragDrop(string.Join(",", selectedListNames), DragDropEffects.Copy);
}
推荐阅读
- notepad++ - 在记事本++中拆分一行[找到该行中的最后一个数字时拆分该行]
- android - 为什么可以在 Kotlin 中更改 val 属性?
- node.js - 如何从 AWS Lambda Node.js 8.10 异步函数返回 net.socket 数据到 AWS API 网关?
- spring - JpaRepsitory 在使用方法时给出错误 existsByUserName(String userName);
- reactjs - FlatList 的对象数组数据源在用作 renderItem 时为空
- python - Python Matplotlib 更新画布中的条形图
- javascript - Wakanda 通过 ODBC 使用 Oracle 数据库
- javascript - 反应 - 获取的地图视图标记未呈现
- php - 如果选择了视频,则更新数据库值?
- sql - DELETE 语句与 REFERENCE 约束冲突,级联删除