我正在使用ListView进行实验,并且遇到了选择矩形的问题。我创建了一个Windows窗体应用程序,将2个ListView控件(listView1,listView2)放到Form1上。
我在设计时设置控件的属性如下:
listView1:添加了3个项目(" Item1"," Item2"," Item3")
listView2:AllowDrop = true。
我编写代码将listView1中的项目拖放到listView2,如下所示。
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
ListView listView = ((ListView)sender);
ListViewItem listViewItem = listView.GetItemAt(e.X, e.Y);
if (listViewItem != null)
{
listView.DoDragDrop(listViewItem, DragDropEffects.Move);
}
}
private void listView2_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listView2_DragDrop(object sender, DragEventArgs e)
{
ListView listView = ((ListView)sender);
ListViewItem listViewItem = ((ListViewItem)e.Data.GetData(typeof(ListViewItem)));
listView1.Items.Remove(listViewItem);
listView.Items.Add(listViewItem);
}
}
}
现在我正在运行应用程序并将listView1中的项拖放到listView2。
这里我发布鼠标左键。 listView1中的项目已成功导出到目标,但在listView1中,选择矩形正在绘制。
释放鼠标左键后,我没有按任何其他键,即所有按钮都处于UP状态,但listView1很乐意对鼠标移动事件和更改选择作出反应。
我无法找到禁用选择矩形的方法。我明白它的系统正在做这一切。在我看来,.Net开发人员无法做任何事情。所以我决定问:
.Net开发人员如何以编程方式控制ListView的选择矩形?
答案 0 :(得分:1)
而不是MouseDown()
,在MouseMove()
中启动拖动,如下所示:
private void listView1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ListView listView = ((ListView)sender);
ListViewItem listViewItem = listView.GetItemAt(e.X, e.Y);
if (listViewItem != null)
{
listView.DoDragDrop(listViewItem, DragDropEffects.Move);
}
}
}