从listview把数据拖拽到datagridview

c_cwh 2011-07-20 08:28:02
我的listview里边有三列姓名、住址、电子邮件,我希望能实现把某一条记录拖拽到datagridview中,datagridview的对应列下就是拖过来的数据,比如姓名就在datagridview的姓名列下面,住址就在datagridview的住址列下面,试了好多次都不成功,希望论坛里有大侠给个代码和示例,谢谢!
...全文
142 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shandengx 2011-07-24
  • 打赏
  • 举报
回复
上面的代码只是实验拖动效果简写的,实用的时候你需要定义一个数据源来存储数据


private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
//datagridview 接收到数据时激发
User u = e.Data.GetData(typeof(User)) as User;
dataGridView1.DataSource = new List<User>() { u };
}

修改为:

List<User> li = new List<User>();
private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
//datagridview 接收到数据时激发
User u = e.Data.GetData(typeof(User)) as User;
li.Add(u);
dataGridView1.DataSource = null;
dataGridView1.DataSource = li;
}
c_cwh 2011-07-22
  • 打赏
  • 举报
回复
shandengx你好,我如果在listview里有多条记录,好像就不行,比如我拖了一条进去,再拖第二天就不起作用了,不知道为何
shandengx 2011-07-20
  • 打赏
  • 举报
回复
将datagridview 的allowdrop 属性设置为true

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
User u = User.GetDefault();
//默认有一条数据
ListViewItem lvi = new ListViewItem(u.Name);
lvi.SubItems.Add(u.Age.ToString());
lvi.SubItems.Add(u.Sex ? "男" : "女");
lvi.Tag = u;
listView1.Items.Add(lvi);
}

private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
//datagridview 接收到数据时激发
User u = e.Data.GetData(typeof(User)) as User;
dataGridView1.DataSource = new List<User>() { u };
}

private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
//listview拖曳项时激发
listView1.DoDragDrop((e.Item as ListViewItem).Tag as User, DragDropEffects.Move);
}

private void dataGridView1_DragEnter(object sender, DragEventArgs e)
{
//datagridview 判断是否需要的数据
if (e.Data.GetDataPresent(typeof(User)))
{
e.Effect = DragDropEffects.Move;
}
}
}

public class User
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public bool Sex
{
get;
set;
}
public static User GetDefault()
{
return new User() { Name = "张三", Age = 22, Sex = true };
}
}
guoyanhong1111 2011-07-20
  • 打赏
  • 举报
回复
获得你要拖的那列的数据,再把这列数据绑定到对应的列,再让数据重新绑定!

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧