2016-11-28 13 views
0

私はC#をかなり新しくしており、グループプロジェクトに取り組んでいます。多くのコードは私によって書かれていません。私はデータの範囲を収集するためのユーザーインターフェイスを作成しようとしています。 1つの質問をした後、私は次の質問を表示したい。私は変数 'gesturenumber'を割り当てることによってこれを行い、ユーザが '次へ'をタイプするとそれを増やしています。問題は、値が最初に定義された値に戻ってしまうことです。C#変数は常に初期値に再割り当てされます

これは、この関数の開始時に、私の初期の段階である:ユーザーが「コレクト」は、この値を1に変更する必要がある場合には

public void CheckKeys(object sender,  System.Windows.Forms.KeyPressEventArgse) enter code here{ 
     int gesturenumber = 0; 
     int testnumber = 1; 



     if (e.KeyChar == (char)13) 
     { 
      int totalLines = richTextBox1.Lines.Length; 
      string lastLine = richTextBox1.Lines[totalLines - 2];    
      if (lastLine == "clear") 
      { 
       richTextBox1.Clear(); 
       richTextBox1.AppendText("Welcome\n\nTo connect an IMU, please enter it's three digit ID number\n\nFor Assistance - Enter \"help\"\n\n", true); 

、およびユーザーが「次へ」それが1で増やす必要があります。私が書いたコードは以下である:

if (lastLine == "collect") 
      { 

       richTextBox1.AppendText("\nThank you for volunteering for our data collection process\n"); 
       richTextBox1.AppendText("\nYou will be asked to carry out a series of gestures. Please repeat each gesture 10 times before moving on to the next.\n"); 
       richTextBox1.AppendText("\nPlease choose which gesture number you will be doing'\n"); 
       gesturenumber = 1; 
       testnumber = testnumber + 1; 

      } 



      if (lastLine == "next") 
      { 
       gesturenumber = gesturenumber + 1; 
       foreach (NU NU in ConnectedIMUS) 
       { 
        NU.StopNU(); 
        NU.saveData = false; 
        NU.Kat = false; 

       } 
       try 
       { 
        file.Close(); 
        richTextBox1.AppendText("\n Thank you for completing the gesture, please follow the instructions for the next gesture \n", true); 
       } 
       catch (Exception) { } 
       richTextBox1.AppendText(" ", true); 

      } 

各部分がユーザ入力が読み取られ、または特定の変数が読み取られる場合に別の文に含まれています。

この関数が実行されると、ジェスチャ番号はゼロにリセットされたままになり、if文がトリガされることはありません。私を助けてください! ありがとう

+0

。静的変数についても読んでください。 – rolls

答えて

0

関数内で値がに設定されているため、関数が実行されるたびに変数がリセットされます。

代わりに、それらをメンバーレベルのフィールドを作り、関数の外でそれらを移動:あなたは、彼らは非常に重要concepsあるとして、ローカルおよびグローバル変数を理解する必要が

private int gesturenumber = 0; 
private int testnumber = 1; 

public void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
    { 
     ... 
関連する問題