0

これは、生徒の情報を記録するための単純なアプリケーションです。フォームには、名前やコースなどの情報を入力するテキストボックスと、「SET」「CLEAR」「GET」の 3 つのボタンがあります。set ボタンはユーザー入力を取得して文字列として保存することになっています。CLEAR ボタンはすべてのテキスト ボックスをクリアし、GET ボタンはデータをテキスト ボックスに戻すことになっています。

namespace Project1

 public partial class MainWindow : Window
 {
     public MainWindow()
     {
         InitializeComponent();
     }



     public void SetBttn_Click(object sender, RoutedEventArgs e)
     {
         string firstname = FirstNameTxtBox.Text;
         string lastname = LastNameTxtBox.Text;
         string course = CourseTxtBox.Text;
         string mno = MNoTxtBox.Text;
         string yrmark = YrMarkTxtBox.Text;
     }

     private void ClrBttn_Click(object sender, RoutedEventArgs e)
     {
         FirstNameTxtBox.Text = String.Empty;
         LastNameTxtBox.Text = String.Empty;
         CourseTxtBox.Text = String.Empty;
         MNoTxtBox.Text = String.Empty;
         YrMarkTxtBox.Text = String.Empty;
     }

     private void GetBttn_Click(object sender, RoutedEventArgs e)
     {
         FirstNameTxtBox.Text = firstname;
         LastNameTxtBox.Text = lastname;
         CourseTxtBox.Text = course;
         MNoTxtBox.Text = mno;
         YrMarkTxtBox.Text = yrmark;


     }

     private void ShowBttn_Click(object sender, RoutedEventArgs e)
     {
         {
             phd newWin = new phd();
             newWin.Show();
         }
     }




 }
} 
4

4 に答える 4

2

メソッド内で変数を作成しているためです。あなたのメソッドでは、 (メソッドへの) ローカルSet変数を作成していますが、その変数は Set メソッドでのみアクセスできるため、他のメソッド (Get) でそれを読み取ることはできません。

解決策 : メソッドの外部で定義された変数を使用して、そこから格納および読み取りを行います。ここでは、クラス レベルで変数を定義しています。これは、すべてのメソッドでアクセスできます。あるメソッドで値を設定し、別のメソッドで値を読み取ることができます。

public partial class MainWindow : Window
{
  private string _firstName;
  public void SetBttn_Click(object sender, RoutedEventArgs e)
  {
     //Setting the value to the class level scoped variable.
      _firstName = FirstNameTxtBox.Text;
  }
  private void GetBttn_Click(object sender, RoutedEventArgs e)
  {
    //Reading the value from the class level scoped variable.
     FirstNameTxtBox.Text = _firstName ;
  }
}
于 2013-10-15T19:59:22.617 に答える
0

文字列の宣言をメソッドの外に移動する必要があります。

// Declaration:
private string firstname = "";
private string lastname = "";
private string course = "";
private string mno = "";
private string yrmark = "";

public MainWindow()
{
    InitializeComponent();
}

public void SetBttn_Click(object sender, RoutedEventArgs e)
{
    firstname = FirstNameTxtBox.Text;
    lastname = LastNameTxtBox.Text;
    course = CourseTxtBox.Text;
    mno = MNoTxtBox.Text;
    yrmark = YrMarkTxtBox.Text;
}
于 2013-10-15T20:03:16.020 に答える
0

問題は、文字列を関数の外に設定する必要があるため、ローカルではありません。

string firstname;
string lastname;
 string course;
string mno;
 string yrmark;
 public void SetBttn_Click(object sender, RoutedEventArgs e)
     {
         firstname = FirstNameTxtBox.Text;
         lastname = LastNameTxtBox.Text;
         course = CourseTxtBox.Text;
         mno = MNoTxtBox.Text;
         yrmark = YrMarkTxtBox.Text;
     }
于 2013-10-15T19:59:35.253 に答える
0

発生しているエラーを実際に投稿する必要があります。しかし、とにかく、そこにある問題は、変数を で宣言していることですSetBttn_Click。つまり、それらはそのメソッド内にのみ存在します。これをローカル変数と呼びます。

あなたが試みていることを行うには、変数をフォーム自体のフィールドとして宣言する必要があります。

public partial class MainWindow : Window
{
    private string firstname, lastname, course, mno, yrmark;
    ...

そうすれば、クラス内のすべてのメソッド間で共有されます。また、ローカル変数と区別するために、別の名前を付けることをお勧めします。名前の前にアンダースコアを付ける人もいますが、私はm_FirstName.

于 2013-10-15T19:59:46.023 に答える