Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How To Call Into Parent Class
Message
De
11/06/2009 01:21:08
 
Information générale
Forum:
ASP.NET
Catégorie:
Code, syntaxe and commandes
Divers
Thread ID:
01405105
Message ID:
01405109
Vues:
61
There is no built-in Parent reference in C#, so, you need to design your Collection class to receive a reference to the parent that created it.

Consider this sample I found on the web doing a Google search. Notice how the constructor in Worker receives a reference to the Game that created it. It is type dependent, so you will need to specify the object type that the Parent is expected to be. In the sample, the Worker class can then reference this.parent to reference the parent.

It's called a 'reference' in C#. Get it? Here is a link to the place I found this sample: http://www.gamedev.net/community/forums/topic.asp?topic_id=493583

and, here is another good example/explanation as well: http://stackoverflow.com/questions/185124/nested-class (talks about Nested Classes, but the idea of passing a parent reference in is still easy to see)

Keep reading after the sample to see what I think YOUR class needs to look like... It should get you started in the right direction.

Sample:
public class Worker
{
  Game parent;

  public Worker(Game game)
  {
    parent = game;
  }
}

public class Game
{
  public void CreateRandomGameEnvironment()
  {
    for (int i=0; i<500; ++i)
    {
      Worker temp = new Worker(this);
      temp.Randomize(i);
      Workers.Add(temp);
    }
  }
}
So, your Collection class code might look like this:
public class Columns : CollectionBase
{
   Object ParentUserControl;   // ---------------- A new field needed to reference the parent (Need to change Object to you UserContol class here and in the constructor below

   public Columns(Object ParentUserControl)   // ---------------- Add a constructor for your class that will receive a Parent reference
   {
     this.parent = ParentUserControl;
    }

   public Column this[int index]
    {
        get {return (Column)List[index];}
    }
    public void Add(Column item)
    {
        List.Add(item);
        this.ParentUserControl.DoSomething();     //  -------------- Now you can reach the Parent to do things
    }
    public void Insert(int index, Column item)
    {
        List.Insert(index, item);
    }
    public void Remove(Column item)
    {
        List.Remove(item);
    }
}
Also, when your UserControl creates an instance of this Collection, it will need to pass itself in:
 Columns ColumnCollection  = new Columns(this);
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform