0

这是一个简单的应用程序,应该记录学生信息。在表格上有用于诸如姓名、课程等信息的文本框和三个按钮“SET”、“CLEAR”和“GET”。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方法中,您正在创建本地(方法)变量,并且您无法在其他方法(Get)中读取它,因为该变量只能在 Set 方法中访问。

解决方案:使用在您的方法之外定义的变量并从中存储和读取。在这里,我在类级别定义一个变量。这在所有方法中都可以访问。您可以在一种方法中设置值并在另一种方法中读取值。

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

问题是你需要在你的函数之外设置你的字符串,所以不是本地的。

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 回答
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 回答