在MS-Word
鼠标点击事件被用作:三脚鼠标在C#中单击?
一按 - 将光标
双击 - 选择字
三击 - 选择段落
在C#中我可以处理单,双鼠标点击事件,但我想处理事件C#Windows TextBox。
例子:
void textbox1_TripleClick()
{
MessageBox.Show("Triple Clicked");
}
在MS-Word
鼠标点击事件被用作:三脚鼠标在C#中单击?
一按 - 将光标
双击 - 选择字
三击 - 选择段落
在C#中我可以处理单,双鼠标点击事件,但我想处理事件C#Windows TextBox。
例子:
void textbox1_TripleClick()
{
MessageBox.Show("Triple Clicked");
}
看一看这样的: Mousebuttoneventargs.clickcount
这应该涵盖的,我知道。
你只需要存储时,双击那个盒子里发生的时间。然后,在单击处理程序中,检查双击是否发生不超过N毫秒(N = 300左右)。
在这种情况下,直接调用您的TripleClick()函数或为您派生的“TripleClickAwareTextBox”定义一个新事件。
我工作的一个类似的问题在C++
首先,你需要了解事件如何解雇,我带点击使用鼠标左键: - 点击一次 - >左键单击事件开火 - 双击 - >左键双击事件触发
Windows仅支持您达到此级别。
对于三重点击,它实质上是双击之后的点击,中间的时间足够小。所以,你需要做的是处理一个点击事件,检查之前是否有双击,并触发一个三重点击事件。
虽然代码是不同的,这是我要做的事:
处理程序
click处理
if ((clock() - doubleClickFiredTime) < doubleClickInterval)
<fire triple click event>
tripleClickFired = true;
else
<fire click event>
双击处理程序
doubleClickTime == clock()
doubleClickInterval == GetDoubleClickTime() * CLOCKS_PER_SEC/1000;
If (!tripleClickEventFired)
<fire doubleClickEvent>
else
tripleClickEventFired = false;
个
我使用的功能是:
注:第三点击火灾既是一个系统级单击和双击事件
做到这一点:
private int _clicks = 0;
private System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();
private void txtTextMessage_MouseUp(object sender, MouseEventArgs e)
{
_timer.Stop();
_clicks++;
if (_clicks == 3)
{
// this means the trip click happened - do something
txtTextMessage.SelectAll();
_clicks = 0;
}
if (_clicks < 3)
{
_timer.Interval = 500;
_timer.Start();
_timer.Tick += (s, t) =>
{
_timer.Stop();
_clicks = 0;
};
}
}
不要*猜测*对于某些用户来说时间太短,对其他用户来说太长。使用用户在其操作系统中配置的时间作为其首选双击时间。可通过SystemInformation.DoubleClickTime访问 - http://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.doubleclicktime.aspx – 2011-02-16 11:34:01
您还希望确保每次点击都发生在最后单击,大小为SystemInformation.DoubleClickSize。 – EricLaw 2012-09-02 17:59:51