检测点击触摸屏的两个按钮
Posted
技术标签:
【中文标题】检测点击触摸屏的两个按钮【英文标题】:Detect two buttons clicked for touchscreen 【发布时间】:2016-12-05 02:45:22 【问题描述】:我有一个 kiosk machine 应用程序,显示为 always on the top
和 fullscreen
。另外,我必须关闭explorer.exe
。
因此,如果没有键盘,我将无法访问任何内容。
我正在考虑做手势或无敌按钮,以便我可以打开explorer.exe
无需键盘。
我想知道是否有办法检测是否同时点击了两个按钮。我尝试使用以下代码,但它不起作用。
PS:由于我的电脑没有触摸屏,我无法逐行调试。 因此,我无法找出是哪一行导致了问题。
private bool button1WasClicked = false;
private bool button2WasClicked = false;
private void button1_MouseDown(object sender, MouseEventArgs e)
button1WasClicked = true;
private void button1_MouseUp(object sender, MouseEventArgs e)
button1WasClicked = false;
private void button2_MouseUp(object sender, MouseEventArgs e)
button2WasClicked = false;
private void button2_MouseDown(object sender, MouseEventArgs e)
if (button1WasClicked == true)
Process.Start(Path.Combine(Environment.GetEnvironmentVariable("windir"), "explorer.exe"));
Application.Exit();
button1WasClicked = false;
【问题讨论】:
1.打开/关闭 explorer.exe 是什么意思? 2. 最好试试key Modifiers @LeiYang 如果explorer.exe
关闭,任务栏也会消失。我将不得不在维护期间将其重新打开。我需要键盘才能使用key modifiers
。正如我在问题中提到的那样,我将不得不在没有键盘的情况下执行此操作。
不可见的按钮如何被点击?
又怎么能同时点击两个按钮呢?
@Kinetic 我仍然将visible
属性设置为true
,但将FlatStyle 设置为flat。将 BorderColor、MouseDownBackColor 和 MouseOverBackColor 设置为 BackColor,以便用户看不到它。如果是触摸屏,可以同时触摸两个按钮。
【参考方案1】:
你不能用鼠标或键盘同时点击两个按钮,如果你说的是使用触摸屏,WinForms 框架不支持它们(点击最多只会被解释为单独的鼠标点击) .你会想看看使用Surface SDK 或其他东西。
【讨论】:
【参考方案2】:我找到了一个不同的解决方案,其中必须按特定顺序单击按钮(面板)才能实现我想要的。我还添加了一个计时器。下面是我的代码。
private bool panel1WasClicked = false;
private bool panel2WasClicked = false;
int second = 0;
private void panel1_Click(object sender, EventArgs e)
MaintenanceTimer.Interval = 500;
MaintenanceTimer.Start();
second = 0;
if (panel1WasClicked == false)
panel1WasClicked = true;
else
panel1WasClicked = false;
private void panel2_Click(object sender, EventArgs e)
if (panel2WasClicked == false && panel1WasClicked == true)
panel2WasClicked = true;
else
panel2WasClicked = false;
private void panel3_Click(object sender, EventArgs e)
if (panel1WasClicked && panel2WasClicked == true)
//Do something
panel1WasClicked = false;
panel2WasClicked = false;
MaintenanceTimer.Stop();
private void MaintenanceTimer_Tick(object sender, EventArgs e)
second += 1;
if (second >= 5)
MaintenanceTimer.Stop();
second = 0;
panel1WasClicked = false;
panel2WasClicked = false;
【讨论】:
以上是关于检测点击触摸屏的两个按钮的主要内容,如果未能解决你的问题,请参考以下文章