C# .Net WinForms。如何以编程方式控制ListView的选择矩形?
我在用ListView做一个实验,遇到了一个选择矩形的问题。我创建了一个windows窗体应用程序,将两个ListView控件(listView1、listView2)放到Form1上 我在设计时设置控件的属性,如下所示: 列表视图1:添加了3个项目(“项目1”、“项目2”、“项目3”) listView2:AllowDrop=true 我编写了将项目从listView1拖放到listView2的代码,如下所示C# .Net WinForms。如何以编程方式控制ListView的选择矩形?,c#,.net,winforms,listview,C#,.net,Winforms,Listview,我在用ListView做一个实验,遇到了一个选择矩形的问题。我创建了一个windows窗体应用程序,将两个ListView控件(listView1、listView2)放到Form1上 我在设计时设置控件的属性,如下所示: 列表视图1:添加了3个项目(“项目1”、“项目2”、“项目3”) listView2:AllowDrop=true 我编写了将项目从listView1拖放到listView2的代码,如下所示 using System; using System.Windows.Forms;
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中,选择矩形正在绘制
释放鼠标左键后,我没有按任何其他键,也就是说,所有按钮都处于向上状态,但listView1很高兴地对鼠标移动事件和更改选择做出反应
我找不到禁用选择矩形的方法。我知道它的系统在做这一切。在我看来,对于.Net开发人员来说,似乎已经没有办法对此做任何事情了。所以我决定问:
一个.Net开发人员如何以编程方式控制ListView的选择矩形?而不是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);
}
}
}
你好可能您应该禁用MultiSelect属性?之所以如此,是因为您已经从第一个ListView中释放了MouseUp,并且它仍然“认为”MouseUp没有被禁用,而Capture属性仍然处于启用状态。发生这种情况是因为您使用了错误的事件,请改用ListView.ItemDrag。亲爱的@Idle\u Mind。您的解决方案满足了我的业务逻辑中的所有要求。在ListView控件中,mousemove事件似乎是启动拖动的地方。我将投票赞成你的答案。但我想知道是否有一种方法可以控制.NET上ListView的选择矩形。Net开发人员如何以编程方式控制ListView的选择矩形?