tags:

views:

73

answers:

3
        //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);
                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));
        }

    }
}
A: 

This should do it:

Eagle_Eye_Class_Finder.GetSchedule.Main()
David
Tried it but its saying its inaccessible due to its protection level
JB
+1  A: 

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).

Ando
changed them to.....public class GetSchedule and public class IDnumber.....still saying its inaccessible
JB
My bad - change also the main to public
Ando
ok that error is no longer a problem thanks Ando!
JB
You're welcome! Some vote ups / correct answer mark would be nice as gratitude for those who answered (if their answers were helpful).
Ando
sure how do u that?
JB
read the faq on the top of the page :) - there are some up down arrows on every answer - that's how you vote up/down - there is a "check" sign that marks that answer as the correct one
Ando
A: 

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.

GWLlosa
ok i have a windows form application that recieves that id number as input on form 1 and then based on that id number outputs that users information and class schedule...eventually i want to write the classes to form 2!
JB
the way mentioned above did not work i assumed something was wrong with getschedule, so i tried your way but got errors saying object referense is required for non static field method or propert
JB
that makes sense, wouldnt the public GetSchedule() need a return type however?
JB
the public GetSchedule() doesn't need a return type, because its a constructor. Essentially, since the name of the function is the same as the name of the class, the compiler assumes that the return value of it will be the type of the class.
GWLlosa
i though that as well, but im getting an error now saying method must have a return type
JB
One question with the GetDatafromNumber line, would i need to redefine it? because in the new get schedule copy it is not defined
JB
I don't see where you would need a copy function defined.
GWLlosa
problem solved i figured it out!
JB