C# 如何阻止打开多个表单?

C# 如何阻止打开多个表单?,c#,foreach,listbox,break,selectedindex,C#,Foreach,Listbox,Break,Selectedindex,这里发生的事情是,当我点击myListBox中的某个学生以打开他们的详细信息时,将显示一个显示他们详细信息的windows窗体,显示myListBox中第一位教师详细信息的windows窗体也会显示 如果我在我的列表框中点击一位老师,只会为他们打开一个windows窗体,这就是我想要的。我怎样才能让它像这样为学生工作?我是否可以做一些类似于: if(myListBox.SelectedIndex == Student) { //code to open details form he

这里发生的事情是,当我点击myListBox中的某个学生以打开他们的详细信息时,将显示一个显示他们详细信息的windows窗体,显示myListBox中第一位教师详细信息的windows窗体也会显示

如果我在我的列表框中点击一位老师,只会为他们打开一个windows窗体,这就是我想要的。我怎样才能让它像这样为学生工作?我是否可以做一些类似于:

 if(myListBox.SelectedIndex == Student)
 {
    //code to open details form here
 }
这就是我为人们打开详细信息表单的方式。如果我没有使用表示myListBox.SelectedIndex==index的If语句。然后,将打开每个人的详细信息表单

private void openInfoButton_Click(object sender, EventArgs e)
{
            int index = 0;
            foreach (Student student in studentsList)
            {
                if (myListBox.SelectedIndex == index)
                {
                    PersonDetails studentDetails = new PersonDetails(student);
                    studentDetails.Show();
                    break;
                }
                index++;
            }

            foreach (Teacher teacher in teacherList)
            {
                if (myListBox.SelectedIndex == index)
                {
                    PersonDetails teacherDetails = new PersonDetails(teacher);
                    teacherDetails.Show();
                    break;
                }
                index++;
            }
}

如果查看
sender
对象,它会告诉您单击了哪个按钮。从那里,您应该知道是显示学生表单还是教师表单

您告诉它的是
studentDetails.Show()
在foreach循环中。。你还期待什么呢?它被称为调试器,使用它,你会看到wonders@DJKRAZE我还能把它放在哪里?如果我在外部创建Instance,它将不会检测到学生,因此在表单打开时不会显示任何详细信息?如果我错了,我向您道歉,如果我错了,请纠正我。您可以设置一个开关语句,就像Dan Pichelman提到的,为了捕获按钮,这是您的代码/您的设计。也许您应该重新考虑当前的设计,而不知道您的要求是什么,在你的例子中,这就像是
盲引导盲
开关(((按钮)发送器)。Name){//case语句在这里}类似的东西,如果你想知道哪个按钮,否则你需要真正提供更具体的信息