C# 如何在C中将同一变量传递给其他窗体#

C# 如何在C中将同一变量传递给其他窗体#,c#,.net,winforms,C#,.net,Winforms,我想要实现的是,当学生登录到系统时,系统应该从数据库中获取他/她的studentID。然后在我的“考试表”——学生参加考试的地方。系统应将考试详情和参加考试的学生ID添加到“考试”表中 问题:我不知道如何将studentID从登录表单传递到测试表单 我有一些我已经试用过的代码,这是我所做的研究的结果,但它仍然不适用于我: 登录表单代码:[只有相关位是“StudentID”部分] //gets the info and checks if the input is same as contents

我想要实现的是,当学生登录到系统时,系统应该从数据库中获取他/她的studentID。然后在我的“考试表”——学生参加考试的地方。系统应将考试详情和参加考试的学生ID添加到“考试”表中

问题:我不知道如何将studentID从登录表单传递到测试表单

我有一些我已经试用过的代码,这是我所做的研究的结果,但它仍然不适用于我:

登录表单代码:[只有相关位是“StudentID”部分]

//gets the info and checks if the input is same as contents in DB
using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;database=project;username=root;password=***;"))
{
MySqlCommand cmd = new MySqlCommand("SELECT student.studentID, student.studentUsername, student.studentPassword, student.studentFirstName, student.studentLastName, teacher.teacherUsername, teacher.teacherPassword, teacher.teacherFirstName, teacher.teacherLastName FROM student, teacher WHERE (student.studentUsername = @userName AND student.studentPassword = @passWord) OR (teacher.teacherUsername = @teacherUser AND teacher.teacherPassword = @teacherPass);");
cmd.CommandType = CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@userName", textboxUsername.Text);
cmd.Parameters.AddWithValue("@passWord", texBoxPassword.Text);
cmd.Parameters.AddWithValue("@teacherUser", textboxUsername.Text);
cmd.Parameters.AddWithValue("@teacherPass", texBoxPassword.Text);
MySqlDataReader DBReader;
cmd.Connection = connection;
connection.Open();
DBReader = cmd.ExecuteReader();
while (DBReader.Read())
{
var teacherFirstName = DBReader.GetString("teacherFirstName");
var teacherLastName = DBReader.GetString("teacherLastName");
var teacherLogin = DBReader.GetString("teacherUsername");
var teacherPass = DBReader.GetString("teacherPassword");
var studentFirstName = DBReader.GetString("studentFirstName");
var studentLastName = DBReader.GetString("studentLastName");
var studentLogin = DBReader.GetString("studentUsername");
var studentPass = DBReader.GetString("studentPassword");
string studentID = DBReader.GetString("studentID");
if (teacherLogin == textboxUsername.Text && teacherPass == texBoxPassword.Text)
{
 MessageBox.Show("Welcome " + teacherFirstName + " " + teacherLastName);
 this.Hide();
 TeacherHomepage Form = new TeacherHomepage();
 Form.Show();
}
else if (studentLogin == textboxUsername.Text && studentPass == texBoxPassword.Text)
{
  MessageBox.Show("Welcome " + studentFirstName + " " + studentLastName);
  this.Hide();
  Test ss = new Test(studentID);
  ss.Show();
}
  else
{
  MessageBox.Show("username or password invalid");
}
测试表格代码:

public Test(string studentID)
{
  InitializeComponent();
  int StudentID = Convert.ToInt32(studentID);
 }
注: 登录功能可以工作:
我想要与登录的学生相同的StudentID用于表单“测试”。另外,当studentID是局部变量时,如何在其他函数中使用测试表单中的“studentID”变量?还要注意,我没有使用任何类(OOP)。如果有更简单的方法,请告诉我。

您可以将StudentID添加为自动属性或测试表单中的字段。所以它将是-->


您可以将StudentID作为自动属性或字段添加到测试表单中。所以它将是-->


您可以在类中声明一个公共变量,并使用它来存储学生id的值。您可以在需要的地方使用它

Public static int student_id;

您可以在类中声明一个公共变量,并使用它来存储学生id的值。您可以在需要的地方使用它

Public static int student_id;