MessageBox不显示变量

时间:2016-12-14 18:14:34

标签: c#

我有一个列表变量,我为它创建了一个迭代器来打印出它的内容。它在控制台应用程序中工作,但当我尝试使用Windows窗体(gui)时,它不起作用

Program.cs的

namespace gui
{
    static class Program
    {
        public class studentdata
        {
        public string id, name, password, academicyear, finishedcourseslist, ipcourseslist;
        public int noCoursesF, noCoursesIP;
        public List<string> coursesF;
        public List<string> coursesIP;
        public studentdata()
        {
            id = "2015123";
            password = "Student";
            coursesF = new List<string>();
            coursesIP = new List<string>();
        }

        public studentdata(string ID, string NAME, string PASSWORD)
        {
            id = ID;
        }

        **public void view_finished_courses()
        {
            List<string> finished = coursesF;
            foreach (string n in finished)
            {
                finishedcourseslist += n;
            }
            MessageBox.Show(finishedcourseslist, "Finished courses");
        }

        public void view_ip_courses()
        {
            List<string> progress = coursesIP;
            foreach (string m in progress)
            {
                ipcourseslist += m;
            }
            MessageBox.Show(ipcourseslist, "Finished courses");
        }**
    }

    public class Admin
    {
        public string name, password;

        public Admin()
        {
            name = "Admin";
            password = "Admin";
        }
    }

    //functionssssss
    internal static studentdata studentSearch(string IDsearch)
    {
        FileStream FS = new FileStream("Students.txt", FileMode.Open);
        StreamReader SR = new StreamReader(FS);

        studentdata std = new studentdata();

        while (SR.Peek() != -1)
        {
            string z = SR.ReadLine();

            String[] Fields;
            Fields = z.Split(',');

            if (IDsearch.CompareTo(Fields[0]) == 0)
            {
                std.id = Fields[0];
                std.password = Fields[1];
                std.name = Fields[2];
                std.noCoursesF = int.Parse(Fields[3]);
                int currentField = 4;
                for (int course = 0; course < std.noCoursesF; course++)
                {
                    std.coursesF.Add(Fields[currentField]);

                    currentField++;
                }

                std.noCoursesIP = int.Parse(Fields[currentField]);
                currentField++;
                for (int course = 0; course < std.noCoursesIP; course++)
                {
                    std.coursesIP.Add(Fields[currentField]);
                    currentField++;
                }
                std.academicyear = Fields[currentField];

                SR.Close();
                return std;
            }
            else continue;
        }
        SR.Close();
        studentdata araf = new studentdata();
        return araf;
    }
}

FORM.CS

namespace gui
{
    public partial class Form3 : Form
    {
        Program.studentdata student = new Program.studentdata();

        public Form3()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button5_Click(object sender, EventArgs e)
        {

        }

        private void button4_Click(object sender, EventArgs e)
        {
            student.view_finished_courses();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            student.view_ip_courses();
        }
    }
}

输出是一个空消息框,我不知道为什么没有添加变量。

2 个答案:

答案 0 :(得分:0)

将消息框行替换为

MessageBox.Show(string.Join(",", coursesF.ToArray()), "Finished courses");

答案 1 :(得分:0)

您的代码似乎不完整。单击button4后执行的代码中没有任何内容,您将向coursesF添加项目。您似乎要在此行中添加项目:std.coursesF.Add(Fields[currentField]); 这一行在你的函数studentSearch(IDsearch)中,函数永远不会被调用。
在这个函数中,你得到一个字符串z,其中保存了学生的所有数据(string z = SR.ReadLine())。你必须以某种方式填写这个字符串z。您可以在表单中使用TextBox并将值传递给字符串,使用文本文件中的字符串或使用控制台输入(请参阅此处:Get input from console into a form)。
正如您所看到的,问题不是一线修复。