当前位置:编程学习 > C#/ASP.NET >>

C#程序题,急

这是windows应用程序下的一个学生类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace L8_2
{
    public class Student
    {
        private string id;
        private string name;
        private bool gender;
        private int _class;
        private int grade;
        public string ID
        {
            get { return id; }
            set { id = value; }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public bool Gender
        {
            get { return gender; }
            set { gender = value; }
        }
        public int Class
        {
            get { return _class; }
            set { _class = value; }
        }
        public int Grade
        {
            get { return grade; }
            set { grade = value; }
        }
        public Student(string id, string name, bool gender, int _class = 1, int grade = 1)
        {
            this.id = id;
            this.name = name;
            this.gender = gender;
            this._class = _class;
            this.grade = grade;
        }
    }
        public class Undergraduate : Student
        {

            public string Department { get; set; }
            public Undergraduate( string id, string name, bool gender, int _class = 1, int grade = 1)
                : base(id, name, gender, _class = 1, grade = 1)
            {
                
            }
        }
        public class Graduate : Student
        {

            public string Department { get; set; }
            public string Tutor { get; set; }
            public Graduate( string id, string name, bool gender, int _class = 1, int grade = 1)
                : base(id, name, gender, _class = 1, grade = 1)
            {
                
            }

        }
    }
    
这是一个主窗体:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace L8_2
{
    public partial class Form1 : Form
    {
        private Student[] students;
        public Form1()
        {
            InitializeComponent();
            students = new Student[3];
            students[0]=new Student("001","赵华",false);
            students[1] = new Graduate("002", "彭小飞", true,3);
            ((Graduate)students[1]).Department ="计算机工程";
            ((Graduate)students[1]).Tutor = "王家强";
            students[2] = new Undergraduate("003","王萌",false,1,4);
            ((Undergraduate)students[2]).Department = "英语";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           for(int i=0;i< students.Length;i++)
            {
                this.listBox1.Items.Add(students[i].ID + students[i].Name);
            }
            
 
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }

        private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Student stu = students[this.listBox1.SelectedIndex];
                StudentForm form2 = new StudentForm(stu);
                form2.Show();
            
        }

    }
}
这是另外一个学生信息窗体,用来显示学生的详细信息:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace L8_2
{
    public partial class StudentForm : Form
    {
        private Student student;
        public StudentForm(Student student)
        {
            this.student = student;
            InitializeComponent();
        }

        private void StudentForm_Load(object sender, EventArgs e)
        {
            this.ShowStudentInfo(this.student);
            
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label7_Click(object sender, EventArgs e)
        {

        }
        public void ShowStudentInfo(Student student)
        {
            textBox1.Text = student.ID;
            textBox2.Text = student.Name;
            textBox3.Text = student.Gender.ToString();
            textBox4.Text = student.Grade.ToString();
            textBox5.Text = student.Class.ToString();
            if (student is Undergraduate)
            {
                textBox6.Enabled = true;
                textBox6.Text = ((Undergraduate)student).Department;
                textBox7.Text = "";
                textBox7.Enabled = false;

            }
            else if (student is Graduate)
            {
                textBox6.Enabled = true;
                textBox6.Text = ((Graduate)student).Department;
                textBox7.Enabled = true;
                textBox7.Text = ((Graduate)student).Tutor;
            }
            else
            {
                textBox6.Enabled = false;
                textBox6.Text = "";
                textBox7.Enabled = false;
                textBox7.Text = "";
            }
        }

    }
}
但是为什么双击主窗体上的一个学生信息不能显示学生信息窗体?我已经加了一个双击事件。
如图主窗体的界面: --------------------编程问答-------------------- 当年点学生信息的时候,, Form1_MouseDoubleClick 并不会被触发?

debug  断在  Student stu = students[this.listBox1.SelectedIndex];  这一行,看看有没有进来。。

--------------------编程问答-------------------- 不能显示学生信息窗体好像是
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Student stu = students[this.listBox1.SelectedIndex];
                StudentForm form2 = new StudentForm(stu);
                form2.Show();
            
        }
中的代码应该写在
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }
中 --------------------编程问答--------------------
引用 2 楼 MSDXGLDEV 的回复:
不能显示学生信息窗体好像是
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Student stu = students[this.listBox1.SelectedIndex];
                StudentFo……
我试了你的办法可以,单击一下就可以显示出信息,不过双击事件能不能显示出信息? --------------------编程问答-------------------- 应该是  listBox1_MouseDoubleClick 这个事件
你看看是不是代码放错地方了
是 listBox1 的双击事件 --------------------编程问答-------------------- 双击事件?从你的程序代码来看是要获取索引值,双击的话,不在LISTBOX的ITEM上面双击也会调出FORM2,好像与你的代码的意思不一样。
非要双击产生的话,直接把代码放大鼠标的双击事件中 --------------------编程问答--------------------
引用 5 楼 MSDXGLDEV 的回复:
双击事件?从你的程序代码来看是要获取索引值,双击的话,不在LISTBOX的ITEM上面双击也会调出FORM2,好像与你的代码的意思不一样。
非要双击产生的话,直接把代码放大鼠标的双击事件中
可是把代码放在鼠标的双击事件中又没有反应?我也不想双击事件,只是题目要求。。。 --------------------编程问答-------------------- 可是把代码放在鼠标的双击事件中又没有反应?我也不想双击事件,只是题目要求。。。 

=>  是双击事件没错。。 可是通知谁是不一样的

    因为你双击在 listbox1 上,,所以, form 是收不到这个事件通知的。。 (被 listbox 给 拦截 了) --------------------编程问答-------------------- 在双击事件函数里面 先判断 获取或选中的列表项集,然后打印出来  --------------------编程问答--------------------
你应该用这个事件  而不是双击

listBox1_SelectedIndexChanged --------------------编程问答-------------------- 或者
listBox1_DoubleClick
而不是form的双击事件
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,