2016-12-05 5 views
1

キオスクマシンのアプリケーションがあります。always on the topfullscreenです。また、私はexplorer.exeをオフにする必要があります。タッチスクリーンのためにクリックされた2つのボタンの検出

したがって、キーボードなしではアクセスできません。

私はジェスチャーや無敵のボタンを作って、キーボードなしでexplorer.exeをオンにできると思っています。

私は、が2つのボタンが同時にクリックされたかどうかを検出する方法があるかどうかを知りたいと思います。私は次のコードを使用してみましたが、動作していません。

PS:私のPCにはタッチスクリーンがないため、行ごとにデバッグすることはできません。 したがって、私は問題を引き起こす行を見つけることができません。

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; 
     } 
    } 
+0

1. explorer.exeをオン/オフするとどういう意味ですか? 2.多分もっと良い[キー修飾子](http://stackoverflow.com/questions/1434867/how-to-use-multiple-modifier-keys-in-c-sharp)を試してください。 –

+0

@LeiYangが 'explorer.exe 'ならばオフにすると、タスクバーも消えてしまいます。私は保守の間にそれを元に戻す必要があります。 'key modifiers'を使うにはキーボードが必要です。私の質問で言及したように、私はキーボードなしでこれを行う必要があります。 – active92

+0

ボタンが見えない場合、どのようにボタンをクリックできますか? – Kinetic

答えて

0

私は、ボタン(パネル)を特定の順序でクリックして、私が望むことを達成する別の解決策を見つけました。タイマーも追加しました。以下は私のコードです。

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; 

     } 
    } 
0

(タップは、単にとして解釈されますあなたは、マウスやキーボードを使って一度に2つのボタンをクリックすることはできません、あなたはタッチスクリーンを使用して話をしている場合は、WinFormsのフレームワークは、それらをサポートしていません。個々のマウスのクリックは最高です)。代わりにSurface SDKなどを使用して見たいと思うでしょう。

+0

は間違いなくこれを調べます。ありがとう。 – active92

関連する問題