2016-12-05 46 views
1

我有一個亭機出現always on the topfullscreen的應用程序。另外,我必須關閉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; 
     } 
    } 
+0

1.您打開/關閉explorer.exe有什麼意思? 2.也許更好的嘗試[鍵修飾符](http://stackoverflow.com/questions/1434867/how-to-use-multiple-modifier-keys-in-c-sharp) –

+0

@LeiYang如果'explorer.exe'是關閉,任務欄也將消失。我將不得不在維護期間將其重新打開。我將要求鍵盤使用'鍵修飾符'。正如我在我的問題中提到的那樣,我必須在沒有鍵盤的情況下這樣做。 – 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

您不能單擊兩個按鈕同時用鼠標或鍵盤,如果你在談論使用觸摸屏,該框架的WinForms不支持他們(抽頭將被簡單地理解爲最好單獨點擊鼠標)。你會想看看使用Surface SDK或別的東西。

+0

一定會考慮到這一點。謝謝。 – active92