繁体   English   中英

C#空对象属性来自另一个类的列表

[英]C# Empty object property List from another class

所以,我对列表中的对象有问题。 该列表在Student类中,名为ListaWybranychPrzedmiotow ,我初始化并用DeansOffice类中的对象填充它。

当我尝试在DeansOffice类的MessageBoxes中显示它们时,它通常会显示它,但是当我尝试从MainWindow类显示相同的MessageBox时,同一个List是空的,并且MessageBox中没有显示任何对象。

我究竟做错了什么?

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        GetDataFromDb();
        StudentsDataGrid.ItemsSource = Student._ListaStudentow;
    }

    private void AddButton_Click(object sender, RoutedEventArgs e)
    {
        var wnd = new DeansOffice();
        wnd.ShowDialog();

        if (wnd.NewStudent != null)
        {
            var NewStudent = wnd.NewStudent;
            foreach (Subject s in NewStudent.ListaWybranychPrzedmiotow)
                MessageBox.Show(s.Name);   //HERE they don't appear
        }
    }
}
public partial class DeansOffice : Window
{
    public Student NewStudent { get; set; }
    public List StudentSubjects = new List();

    public DeansOffice()
    {
        InitializeComponent();
        StudiaComboBox.ItemsSource = Studies._StudiesList;
        PrzedmiotyListBox.ItemsSource = Subject._SubjectList;
    }

    private void AddButton_Click(object sender, RoutedEventArgs e)
    {
        var tmpNazwisko = NazwiskoTextBox.Text;
        var tmpImie = ImieTextBox.Text;
        var tmpNrIndeksu = NrIndeksuTextBox.Text;
        var StudentSubjects = Subject._SubjectList.Where(p => p.IsChecked == true);
        var AreSubjectsSelected = StudentSubjects.Any();

        if (tmpImie != "" && tmpNazwisko != "" && tmpNrIndeksu != "" && StudiaComboBox.SelectedItem != null && AreSubjectsSelected)
        {
            var match = Regex.Match(tmpNrIndeksu, "^s[0-9]{4,5}$");
            var tmpStudia = ((Studies)StudiaComboBox.SelectedItem).Id;
            if (match.Success)
            {
                NewStudent = new Student
                {
                    Imie = tmpImie,
                    Nazwisko = tmpNazwisko,
                    NrIndeksu = tmpNrIndeksu,
                    IdStudia = tmpStudia,
                    ListaWybranychPrzedmiotow = StudentSubjects
                }; 
                foreach (Subject s in NewStudent.ListaWybranychPrzedmiotow)
                    MessageBox.Show(s.Name);   //HERE CheckBoxes appear
                Close();
            }
        }
    }
}

正如@Blorgbeard所说。 ListaWybranychPrzedmiotow = StudentSubjects ListaWybranychPrzedmiotow = StudentSubjects.ToList()更改为ListaWybranychPrzedmiotow = StudentSubjects ListaWybranychPrzedmiotow = StudentSubjects.ToList()DeansOffice类中创建新的Student对象,有效。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM