返回信息流关于WinForm .NET输入控制,有两个地方不太清楚。
1. 要是想像扫雷那样检测鼠标左右键同时单击的情况,该怎么做?
2. 制作快捷键的话,比如ctrl+s或ctrl+alt+s,只能通过写Windows消息处理函数的方式进行吗?
谢谢!
PS. 不要检测按键间隔的方式
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3090同步于 2011/6/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
WinForm .NET关于输入的问题
FadeToBlack
2011/6/29镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
private void XXXForm_KeyDown(object sender, KeyEventArgs e) //或者 protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.S){///}
}
protected override void OnMouseDown(MouseEventArgs e)
{
if(e.Button==MouseButtons.Left && e.Button==MouseButtons.Right){///}
}
protected override void OnMouseDown(MouseEventArgs e)
{
if(e.Button==MouseButtons.Left && e.Button==MouseButtons.Right){///}
}
这种写法不行啊……
1. 貌似只能在MouseDown和MouseUp里面自己设置标志位来判断
2. 可以做一个菜单(MenuStrip),设置菜单项(ToolStripMenuItem)的ShortCut属性
【 在 FadeToBlack 的大作中提到: 】
: 关于WinForm .NET输入控制,有两个地方不太清楚。
: 1. 要是想像扫雷那样检测鼠标左右键同时单击的情况,该怎么做?
: 2. 制作快捷键的话,比如ctrl+s或ctrl+alt+s,只能通过写Windows消息处理函数的方式进行吗?
: ...................
第1个
public partial class MainForm : Form
{
//定义两个全局变量,以确定鼠标按键按下状态
private bool rightDown = false;
private bool leftDown = false;
//添加MouseDown事件和MouseUP事件
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseUp);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseDown);
//事件声明如下:
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button==MouseButtons.Left)
{
leftDown = true;
}
if (e.Button==MouseButtons.Right)
{
rightDown = true;
}
label2.Text = e.Button.ToString();
WichDown();
}
private void WichDown()
{
if (leftDown)
{
if (rightDown)
{
label2.Text = "两键同时按下";
}
}
}
private void MainForm_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
leftDown = false;
}
if (e.Button == MouseButtons.Right)
{
rightDown = false;
}
}
}
第2个用PINVOKE
【 在 FadeToBlack 的大作中提到: 】
: 关于WinForm .NET输入控制,有两个地方不太清楚。
: 1. 要是想像扫雷那样检测鼠标左右键同时单击的情况,该怎么做?
: 2. 制作快捷键的话,比如ctrl+s或ctrl+alt+s,只能通过写Windows消息处理函数的方式进行吗?
: ...................
http://stackoverflow.com/questions/3209217/detect-both-left-and-right-mouse-click-at-the-same-time
跟StackOverflow讲的一样
【 在 Lonhero 的大作中提到: 】
: 第1个
: public partial class MainForm : Form
:
: ...................