アプリケーションをナビゲートするために、ロード時にメインウィンドウが表示されます。クリックして TeacherTools ウィンドウを開くボタンがあります。ここから、新しい生徒をリストに追加できます。このウィンドウには、MainWindow に戻るための戻るボタンがあり、ここで情報がまだ使用できることを確認できます。3 つ目のウィンドウを開くと問題が発生します。これは、生徒に後で質問が表示される試験ウィンドウであり、現在ロードされている学生ビザの名前にスコアを追加する必要があります。
private List<Student> studentList = new List<Student>();
public partial class MainWindow : Window
{
TeacherTools teachTools = new TeacherTools();
Learning myLearning = new Learning();
private void teachAdmin_Click(object sender, RoutedEventArgs e)
{
this.Hide();
teachTools.ShowDialog();
this.Show();
}
private void Selection_Click(object sender, RoutedEventArgs e)
{
this.Hide();
myTest.studentName.Text = studentsList.SelectedValue.ToString();
myTest.ShowDialog();
this.Show();
}
}
//Exam Window
public partial class Test : Window
{
//I'm sure its not this
Student loadedStudent = new Student();
TeacherTools teachTools = new TeacherTools();
public void(private void finishTest()
{
loadedStudent = teachTools.Kids.Find(delegate(Student s) { return s.Name == studentName.Text; }); //This line
loadedStudent.Attempted = true;
loadedStudent.Score = score;
}
}
そのため、「オブジェクト参照がオブジェクトのインスタンスに設定されていません。-NullReferenceException」を取得しています。MainWindow から Student オブジェクトに変更を加えることができるため、なぜこれが起こっているのかわかりません。
編集: TeacherTools クラス
public partial class TeacherTools : Window
{
private List<Student> studentList = new List<Student>();
public TeacherTools()
{
InitializeComponent();
}
public List<Student> Kids
{
get { return studentList; }
//set { studentList = value; }
}
private void newStudentClick(object sender, RoutedEventArgs e)
{
Student student = new Student();
student.Name = nameBox.Text;
studentList.Add(student);
studentData.ItemsSource = studentList;
studentData.Items.Refresh();
//nameBox
}
}