单击Button时调用.cs文件/程序

时间:2010-04-27 18:13:05

标签: winforms c#-2.0

        //compares text to the id number below



   }

在同一个项目中,所有类别的.CS文件都被分类,并在下面描述

 using System;
 using System.IO;
 using System.Data;
 using System.Text;
 using System.Drawing;
 using System.Data.OleDb;
 using System.Collections;
 using System.ComponentModel;
 using System.Windows.Forms;
 using System.Drawing.Printing;
 using System.Collections.Generic;

 namespace Eagle_Eye_Class_Finder
 {
     class GetSchedule
     {
          class IDnumber
         {

             public string Name { get; set; }
            public string ID { get; set; }
            public string year { get; set; }
            public string class1 { get; set; }
            public string class2 { get; set; }
            public string class3 { get; set; }
            public string class4 { get; set; }

        }


            //
            // Displays the Students Class Schedule.
            //
            Console.WriteLine("--- Students Class Schedule ---");
            foreach (IDnumber IDnumber in IDnumbers)
            {                          
                Console.Write(IDnumber.Name);
                Console.Write(": ");
                Console.WriteLine(IDnumber.ID);
                Console.WriteLine(IDnumber.year);
                Console.WriteLine(IDnumber.class1);
                Console.WriteLine(IDnumber.class2);
                Console.WriteLine(IDnumber.class3);
                Console.WriteLine(IDnumber.class4);


                //get { return this.label1.Text; }
                //set { this.label1.Text = class1; }

                //get { return this.label2.Text; }
                //set { this.label2.Text = class2; }


                //get { return this.label3.Text; }
                //set { this.label3.Text = class3; }

                //get { return this.label4.Text; }
                //set { this.label1.Text = class4; }
            }

            // Clear first two elements in IDnumbers array.

            Array.Clear(IDnumbers, 0, Math.Min(2, IDnumbers.Length));
        }

    }
}

3 个答案:

答案 0 :(得分:1)

GetSchedule的定义修改为Public ClassPublic Static Main,然后David的代码就可以了。

仅使用class定义的类的默认访问级别为internal(C#)/ friend(VB)。

答案 1 :(得分:0)

这应该这样做:

Eagle_Eye_Class_Finder.GetSchedule.Main()

答案 2 :(得分:0)

显而易见的答案是

Eagle_Eye_Class_Finder.GetSchedule.Main()

但是,在我看来,你希望能够对价值做点什么     900456317

为了实现这一点,您必须声明一个附加函数,该函数将该值作为参数接收,然后对其执行一些有用的操作。也许是这样的:

static void ProcessNumber(IDNumber myNum)
{
    StringBuilder myData = new StringBuilder();
    myData.AppendLine(IDnumber.Name);   
    myData.AppendLine(": ");   
    myData.AppendLine(IDnumber.ID);   
    myData.AppendLine(IDnumber.year);   
    myData.AppendLine(IDnumber.class1);   
    myData.AppendLine(IDnumber.class2);   
    myData.AppendLine(IDnumber.class3);   
    myData.AppendLine(IDnumber.class4);  
    MessageBox.Show(myData);
}

然后你可以这样称呼它:

   if (text == "900456317")    
   {    
        Eagle_Eye_Class_Finder.GetSchedule.ProcessNumber(new IDnumber() { Name = "Joshua Banks",ID = "900456317", year = "Senior", class1 = "TEET 4090", class2 = "TEET 3020", class3 = "TEET 3090", class4 = "TEET 4290" });     

   } 

如果你能详细说明你希望完成的事情,可能会更容易。

修改

您需要做的就是将IDnumbers数组的概念从函数调用本身转移到类成员中。例如,请考虑添加以下代码:

IDnumber[] IDnumbers = new IDnumber[3];   

public GetSchedule()
{
        IDnumbers[0] = new IDnumber() { Name = "Joshua Banks",ID = "900456317", year = "Senior", class1 = "TEET 4090", class2 = "TEET 3020", class3 = "TEET 3090", class4 = "TEET 4290" };    
        IDnumbers[1] = new IDnumber() { Name = "Sean Ward", ID = "900456318", year = "Junior", class1 = "ENGNR 4090", class2 = "ENGNR 3020", class3 = "ENGNR 3090", class4 = "ENGNR 4290" };    
        IDnumbers[2] = new IDnumber() { Name = "Terrell Johnson",ID = "900456319",year = "Sophomore", class1 = "BUS 4090", class2 = "BUS 3020", class3 = "BUS 3090", class4 = "BUS 4290" };    

}

这将导致每次创建类的新实例时都会运行该代码。然后,你可以有一个功能

public string GetDataFromNumber(string ID)
{
    foreach (IDnumber idCandidateMatch in IDnumbers)         
    { 
        if (IDCandidateMatch.ID == ID)
        {
            StringBuilder myData = new StringBuilder();
            myData.AppendLine(IDnumber.Name);   
            myData.AppendLine(": ");   
            myData.AppendLine(IDnumber.ID);   
            myData.AppendLine(IDnumber.year);   
            myData.AppendLine(IDnumber.class1);   
            myData.AppendLine(IDnumber.class2);   
            myData.AppendLine(IDnumber.class3);   
            myData.AppendLine(IDnumber.class4);  
            return myData;
        }
    }
    return "";
}

然后从Form1调用的方法更改为:

public void button2_Click(object sender, System.EventArgs e)             
{             


   string text = textBox1.Text;             
   Mainform = this;             

   this.Hide();             

   GetSchedule myScheduleFinder = new GetSchedule();
   string result = myScheduleFinder.GetDataFromNumber(text); 
   if (!string.IsNullOrEmpty(result))             
    {             
        MessageBox.Show(result);
   }             
   else             
   {             
       MessageBox.Show("Enter A Valid ID Number!");             
   }             

}

这里的想法是将你的程序分解成一系列较小的“部分”,每个部分负责做一件事,做得好。在这种情况下,类'GetSchedule'代表程序的一部分,给定一个ID号,它能够检索该用户的描述。上面的代码行读取

   GetSchedule myScheduleFinder = new GetSchedule();

基本上说“我想要一个我的GetSchedule类的新副本,我想用名为'myScheduleFinder'来跟踪它”。每当你在C#中看到“new”这个词时,就会发生这种情况。当new这个单词后跟classname和括号时,它会调用所谓的'constructor'。构造函数基本上是每次创建类时调用的特殊函数;在你的情况下,它是我们放在方法中的代码

public GetSchedule()

现在,假设我们有一个GetSchedule类的副本,由我们的构造函数正确初始化,我们可以在该类上调用ProcessNumber函数,传入我们正在搜索的数字。 'if'语句基本上确保了我们所有可能的记录,我们只使用具有相同ID的记录。然后我们接受该记录,将其转换为字符串,然后返回。然后我们在一个漂亮的小消息框中显示它,虽然你可以在任何你想要的时候使用它。