2013-01-12 9 views
0

Je suis juste un débutant en programmation et j'ai fait une fonction, juste un problème stupide et une question très stupide.S'il vous plaît ne pas impoli, Comment puis-je appeler cette fonction d'une forme différente ou d'une classe. ou même sous la même formeComment appeler cette méthode?

public void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
      for (int i = 0; i <= dtInfo.Rows.Count - 2;i++) 
      { 
       Battery = Convert.ToDateTime(dtInfo.Rows[i].Cells[5].Value.ToString()); 
       Oil = Convert.ToDateTime(dtInfo.Rows[i].Cells[14].Value.ToString()); 
       Fran = Convert.ToDateTime(dtInfo.Rows[i].Cells[12].Value.ToString()); 
       lastkm = int.Parse(dtInfo.Rows[i].Cells[13].Value.ToString()); 

      batt = Battery - DateTime.Now; 
      doil = Oil - DateTime.Now; 
      dfran = Fran - DateTime.Now; 

      if (batt.Days <= 7) 
      { 
       dtInfo.Rows[i].Cells[5].Style.BackColor = Color.Green; 

      } 
      if (doil.Days <= 7) 
      { 
       dtInfo.Rows[i].Cells[14].Style.BackColor = Color.Green; 
      } 
      if (dfran.Days <= 7) 
      { 
       dtInfo.Rows[i].Cells[12].Style.BackColor = Color.Green; 

      } 
      if (lastkm <= 500) 
      { 
       dtInfo.Rows[i].Cells[13].Style.BackColor = Color.Green; 
      } 



     } 
    } 

ÉDITÉ

first open form quand je d'abord ouvrir ma forme le changement de couleur puis quand je l'ouvrir à nouveau reopened form il l'habitude de changer mais quand je trace le code de la valeur du la couleur était le changement, mais pas la couleur dans la cellule

+0

Pour votre information, votre question ne nécessite pas que vous publiez toute méthode - seule la signature ('public void dataGridView1_DataBindingComplete (expéditeur d'objet , DataGridViewBindingCompleteEventArgs e) ') –

Répondre

4

C'est un gestionnaire d'événements, et vous ne pouvez pas soulever l'événement vous-même si:

  1. La classe expose une méthode protégée (ou même publique) pour la déclencher directement, mais cela ne se produit généralement pas dans les classes .NET.

  2. Vous le déclenchez en faisant ce que l'événement réel représente - Dans votre cas, lorsque la liaison de données entre votre grille et votre source est terminée.

Vous pouvez toutefois appeler cette méthode, mais cela n'aurait aucune signification car vous ne déclencheriez pas l'événement. Pourtant, si la logique d'événement n'a pas d'importance et que vous voulez juste que le code à exécuter, vous pouvez le faire par:

dataGridView1_DataBindingComplete(null, null); 

Mais dans ce cas, vous pouvez simplement envelopper le contenu de cette méthode dans une méthode simple avec retour type de void et pas de paramètres.

+0

réellement essayer de changer la couleur d'une cellule dans un datagridview. Avant-je utiliser le public void dataGridView1_DataBindingComplete (expéditeur d'objet, DataGridViewBindingCompleteEventArgs e) {fonction .... la cellule datagridview changer les couleurs ... mais quand je le ferme et re.open à nouveau la couleur changer l'habitude de plus ... – user974015

+0

@ user974015 Que voulez-vous dire par "fermez-le et rouvrez-le"? Ajoutez-vous le gestionnaire à votre événement? – Mir

+0

comme ... quand je ferme la forme ... puis rouvrez-le ...les cellules de datagridview ne changeront plus de couleur ... mais quand j'ai essayé de le tracer ... la cellule obtient la valeur de la backcolor mais elle ne s'appliquera pas ... dans le dataagrid visuel – user974015

0

dataGridView1_DataBindingComplete() est juste une méthode ancienne plaine

dataGridView1_DataBindingComplete(this, new RoutedEventArs()); 

devrait faire l'affaire si vous voulez l'appeler du même objet.

si vous souhaitez réutiliser cette section de code que je prendrais tout ce qui est de la méthode et de créer une méthode publique séparée de sorte que vous pouvez l'appeler d'autres lieux et d'autres objets.

0

Tout dépend où la fonction est située. Si vous l'avez dans la même classe que votre formulaire, vous pouvez simplement l'appeler dans la même étendue. Mais d'après ce que je vois, c'est un gestionnaire d'événements, et vous ne devriez pas avoir besoin de l'appeler, car il gère l'événement dataGridView "DataBindingComplete". Pour plus d'informations à ce sujet, visitez this.

Toutefois, si vous avez besoin d'appeler pour une raison quelconque, vous pouvez simplement faire:

dataGridView1_DataBindingComplete(null, null)