Calling .cs file/program upon click of Button
//compares text to the id number below
}
CLASS BEING CALLED IS A SEPERATE .CS FILE ALL IN THE SAME PROJECT AND DESCRIBED AS BELOW
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);
Cons开发者_运维百科ole.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));
}
}
}
Modify the definition of GetSchedule
to Public Class
and Public Static Main
and then David's code will work.
The default access level for a class defined with just class
is internal
(C#)/ friend
(VB).
The obvious answer is
Eagle_Eye_Class_Finder.GetSchedule.Main()
But, it seems to me that you're hoping to do something with the value 900456317
For that to work, you'd have to declare an additional function which receives that value as a parameter, and then does something useful with it. Maybe something like:
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);
}
Then you can call it like:
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" });
}
Might be easier if you could give more detail on exactly what you're hoping to accomplish.
EDIT
What you need to do for that to work is move the concept of the IDnumbers array out of the function call itself into a class member. For example, consider adding the following code:
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" };
}
This will cause that code to run every time you create a new instance of your class. Then, you can have a function
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 "";
}
And then your method call from Form1 changes to:
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!");
}
}
The idea here is to break your program into a series of smaller 'parts', each of which is responsible for doing one thing, and doing it well. In this case, the class 'GetSchedule' represents the part of your program which, given an ID number, is able to retrieve a description of that user. The line of code above that reads
GetSchedule myScheduleFinder = new GetSchedule();
basically says "I want a new copy of my GetSchedule class, and I want to keep track of it with the name 'myScheduleFinder'". Whenever you see the word 'new' in C#, that's what's happening. When the word new is followed by the classname and parenthesis, its invoking what's called the 'constructor'. Constructors are basically special functions that are called every time the class is created; in your case, its the code we placed in the method
public GetSchedule()
Now, given that we have a copy of the GetSchedule class, properly initialized by our constructor, we can call the ProcessNumber function on that class, passing in the number we're searching for. The 'if' statement basically makes sure that of all of our possible records, we're only using the one that has the same ID. We then take that record, convert it to a string, and return it. Then we show it in a nifty little message box, although you can obviously do with it whatever you want at that point.
This should do it:
Eagle_Eye_Class_Finder.GetSchedule.Main()
精彩评论