引言:
今天做前台C#的同事,纠结在了,“拖拽事件使用的listBox1_MouseDown(s, e)会‘屏蔽掉’双击事件的使用的listBox1_DoubleClick”,这一问题上。查证多方资料,没好的解决方法。
于是笔者休息时实验了一下,使用e.Clicks这个属性可以解决。具体请参阅正文。
正文:
实现机理:((MouseEventArgs)e).Clicks通过值的{1, 2, ...}可以区分单击双击。于是可将双击事件实现写入e.Clicks > 1的语句,来达到预期效果。
细节不叨叨,直接上代码。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace C4PlusWForm
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
// 双击后触发动作
if (e.Clicks > 1)
{
listBox2.Items.Add(listBox1.SelectedItem);
listBox1.Items.Remove(listBox1.SelectedItem);
System.Console.WriteLine("listBox1_MouseDown...DoubleClick");
}
// 单击动作
else {
int index = listBox1.IndexFromPoint(e.X, e.Y);
string str = listBox1.Items[index].ToString();
DragDropEffects ddeLb1 = DoDragDrop(str, DragDropEffects.All);
if (ddeLb1 == DragDropEffects.All)
{
listBox1.Items.RemoveAt(listBox1.IndexFromPoint(e.X, e.Y));
}
}
System.Console.WriteLine("listBox1_MouseDown" + e.Clicks);
}
private void listBox2_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.StringFormat))
{
string str = (string)e.Data.GetData(
DataFormats.StringFormat);
listBox2.Items.Add(str);
}
}
private void listBox2_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
private void listBox1_DoubleClick(object sender, EventArgs e)
{
System.Console.WriteLine("listBox1_DoubleClick");
}
}
}
实验效果图如下:
操作步骤:
0)选中222
1)拖动222
2)双击333
3)双击1111
- 大小: 21.2 KB
分享到:
相关推荐
3. **DragDrop功能**: 拖放(DragDrop)是Windows应用程序中的一种常见交互方式,它允许用户通过按下鼠标按钮,然后在界面上移动鼠标,最后释放鼠标来完成一项操作,如移动文件、复制数据等。在.NET Framework中,可以...
本主题聚焦于“C# WinForm两个listBox之间的Item互相拖动”这一功能,这涉及到Windows窗体应用程序中的事件处理、鼠标操作以及数据传输。下面将详细阐述实现这个功能的关键知识点。 首先,我们要了解`ListBox`控件...
在C#中,这通常通过将事件处理器方法与ListBox的`MouseDoubleClick`事件关联起来实现。以下是一个简单的示例: ```csharp private void lbData_MouseDoubleClick(object sender, MouseEventArgs e) { if (lbData....
在.NET Framework中,C#是一种常用的编程语言,用于开发Windows应用程序。ListBox是Windows Forms中一个基本的控件,通常用于显示一系列的项目供用户选择。然而,标准的ListBox控件并不支持直接在列表中编辑项内容。...
当用户按下鼠标左键并移动时,系统会发送WM_MOUSEMOVE消息,而松开鼠标时则发送WM_LBUTTONUP,开发者需要在这两个消息之间进行必要的逻辑处理来实现拖放。 1. **ListBox控件**:在VC++中,ListBox通常用于显示一个...
我们可以在这两个事件的处理程序中实现拖放逻辑。 1. **启用拖放功能**:首先,我们需要开启`ListBox`控件的拖放功能。这可以通过设置`AllowDrop`属性为`true`来实现。 ```csharp listBox.AllowDrop = true; ``` ...
ListBox是.NET Framework提供的一种常用控件,用于显示一系列可选择的项目。在Windows应用程序中,允许用户通过鼠标或键盘操作来选择和排序这些项。 首先,我们需要创建一个新的WinForm项目,并在设计界面中添加一...
在C#编程中,Listbox控件是一种常用的数据展示组件,它允许程序员向用户显示一系列条目或选项。当我们处理大量数据或者实时更新内容时,可能会遇到需要实现Listbox自动滚动的功能。这个功能通常用于确保最新的添加项...
本示例探讨的是如何实现`ListBox`控件中每一行文本的颜色自定义,即“c# 一个listbox的行字体颜色应用”。这个技巧能够帮助开发者提升用户界面的视觉效果,例如通过不同颜色来区分不同类型的条目或突出重要的信息。 ...
文件功能描述: 对ListBox进行了拓展,实现了两个方面的功能 1:增加了每项的高度,原版默认每行的高度太小,外观不好看 2:增加了对项的双击事件
listbox与textbox组合,实现类似google、百度搜索的模糊查询功能。textbox中输入数据,连接数据库进行模糊查找数据库记录,在将记录加载到listbox中。双击listbox中查询到的记录,再传递到testbox中显示。 希望能给...
有时,我们程序,需要加载一个文件列表,这个列表,通常用ListBox来存放,为了方便操作,让listBox支持拖放入文件的路径,是个非常好的功能,在.NET里面实现这个功能,是非常方便,只需要3个步骤:
在本案例中,介绍了一种使用委托的方法来安全地更新 UI 元素(特别是 ListBox 控件),以实现多线程操作。 #### 关键概念解析 **1. 多线程基础:** - **线程** 是程序执行流的基本单元,一个程序至少有一个线程...
在这个示例中,我们将实现两个ListBox控件之间的拖拽操作,用户可以将一个ListBox控件中的项目拖到另一个ListBox控件中,反之亦然。在拖拽过程中,鼠标会呈现手势状,以增强拖动操作的形象化。 要实现ListBox控件的...
标题“Q759361 v2 C# winforms listbox 双击条目直接修改 窗体传值实时同步”所描述的就是这样一个功能实现:当用户双击`ListBox`中的条目时,会弹出一个窗体用于编辑选中的值,并且这个修改能够实时同步到`ListBox`...
在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序,包括Windows桌面应用。在Windows桌面应用中,ListBox控件通常用来展示一系列的项,用户可以从中选择。然而,系统默认的ListBox控件并不支持自定义颜色...
本篇文章将详细探讨如何在两个ListBox之间实现选项的拖放操作。 首先,我们需要了解拖放(Drag and Drop)的基本原理。拖放是一种用户界面技术,允许用户通过鼠标或其他输入设备从一个位置拖动一个对象到另一个位置...
在C#编程中,数据拖放(Drag and Drop)功能是一项常用的技术,它允许用户通过鼠标将数据从一个位置拖放到另一个位置。在本主题中,我们将深入探讨如何实现C#控件之间的数据拖放操作,以及如何在控件内部进行此类...
在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中实现拖放效果,特别是如何将一个ListBox中的数据项拖动到另一个ListBox中。WPF是.NET Framework的一部分,提供了丰富的用户界面功能,...
这可以通过创建两个ListBox实例并利用`Items`属性来实现。例如,当一个ListBox中的项被选中后,将其移动到另一个ListBox: ```csharp private void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { ...