//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));
}
}
}
答案 0 :(得分:1)
将GetSchedule
的定义修改为Public Class
和Public 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的记录。然后我们接受该记录,将其转换为字符串,然后返回。然后我们在一个漂亮的小消息框中显示它,虽然你可以在任何你想要的时候使用它。