2011-11-24 107 views
1

我的程序打開一系列的表格都在屏幕上,我能夠在逃生方法的代碼,所以在「測試」一詞的打字程序會關閉嗎?C#在按鍵 - 退出程序

我在看msdn按鍵以及他們如何使用開關,我會用類似的東西來檢查按下的按鍵,如果按下正確的按鍵,計數器會按正確的按鍵遞增,直到「測試「,將會到達4,如果按下的鍵不正確,重置計數器並重新開始,直到輸入正確的鍵順序。

我希望是有道理的:P

public partial class TrollFrm : Form 
{ 
    int number = 1; //change to 2 and have the first instance of troll count = number - 1 

    System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer(); 

    public TrollFrm() 
    { 
     InitializeComponent(); 

     this.Text = "Trololol - Troll Count: " + number; 

     startTimer(); 

    } 

    private void TrollFrm_Load(object sender, EventArgs e) 
    { 
     //this.Enabled = false; 
    } 

    private void TrollFrm_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     e.Cancel = true; 
    } 

    public void startTimer() 
    { 
     myTimer.Tick += new EventHandler(createForm); 

     //myTimer.Interval = 500; 

     myTimer.Start(); 

    } 

    public void createForm(Object myObject, EventArgs myEventArgs) 
    { 
     Form frm = new TrollChildFrm(); 

     Random randomX = new Random(); 

     Random randomY = new Random(); 

     frm.Text = "Trololol - Troll Count: " + number; 

     int xValue; 

     int yValue; 

     number++; 

     if (number % 2 == 0) //number is even. 
     { 
      xValue = (Convert.ToInt32(randomX.Next(1, 1920))) + 200; 

      yValue = (Convert.ToInt32(randomY.Next(1, 1080))) - 200; 
     } 

     else //number is not even. 
     { 
      xValue = (Convert.ToInt32(randomX.Next(1, 1920))) - 200; 

      yValue = (Convert.ToInt32(randomY.Next(1, 1080))) + 200; 
     } 

     frm.Show(); 

     frm.Location = new Point(xValue, yValue); 

     if (number == 20) 
     { 
      myTimer.Stop(); 
     } 
    } 
+0

添加的代碼我到目前爲止,不知道如何着手。 – cheeseman

回答

1

它是你可以使用你描述的場景的實現(未盡管測試):

int exitKeysCount = 0; 
private void TrollFrm_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (exitKeysCount == 0 && e.KeyCode == Keys.T) 
     exitKeysCount = 1; 
    else if (exitKeysCount == 1 && e.KeyCode == Keys.E) 
     exitKeysCount = 2; 
    else if (exitKeysCount == 2 && e.KeyCode == Keys.S) 
     exitKeysCount = 3; 
    else if (exitKeysCount == 3 && e.KeyCode == Keys.T) 
     this.Close(); 
    else exitKeysCount = 0; 
} 

我認爲TrollFrm是你的父窗體,如果它們在其他地方被調用,則用主程序函數中的某個函數替換this.Close(),同時TrollFrm在按鍵過程中需要焦點。

+0

沒有違法,但本人認爲喬納森的回答是更好,因爲它具有這樣你就必須稍後添加它 –

+0

還是他的回答之前的其他部分,但它是你的電話 – slawekwin

+0

葉,一審是TrollFrm其次TrollChildFrm的,雖然我可能只是能夠現在使用所有TrollFrm:P是否有使用KeyCode的使用指令?我正在閱讀keydown msdn,我似乎擁有一切,但我無法使用它... – cheeseman

0

試試你的父窗體上這個父。

int trollCount = 0; 

private void TrollFrm_KeyDown(object sender, KeyEventHandler e) 
{ 
    if (trollCount == 0 && e.KeyCode == Keys.T) 
     { 
      trollCount = 1; 
      frm.Text = "Trololol - Troll Count:" + trollCount 
     } 
    else if (trollCount == 1 && e.KeyCode== Keys.E) 
     { 
      trollCount = 2; 
      frm.Text = "Trololol - Troll Count:" + trollCount 
     } 
    else if (trollCount == 2 && e.KeyCode== Keys.S) 
     { 
      trollCount = 3; 
      frm.Text = "Trololol - Troll Count:" + trollCount 
     } 
    else if (trollCount == 4 && e.KeyCode== Keys.T) 
     { 
      trollCount = 4; 
      this.Close(); 
     } 
    else 
     trollCount = 0; 

告訴我,如果你需要別的東西。