2 votes

Comment transférer des données d'un formulaire à un autre en utilisant un gestionnaire d'événements ?

Je suis en train de créer une application Windows Forms que l'on croit être une conception de programme singleton. Cette application utilise un formulaire principal avec différentes options que l'utilisateur peut sélectionner. Ces options, à leur tour, ont toutes leurs formulaires correspondants avec des fonctions uniques attachées. Lorsque le formulaire principal s'exécute et que l'utilisateur sélectionne une option, le formulaire de l'option est alors masqué. à l'utilisateur (et non fermé) jusqu'à ce qu'il soit à nouveau sélectionné. Note IL N'EST PAS FERMÉ.

J'ai un formulaire avec une zone de texte riche et après avoir vérifié la validité du contenu, je veux envoyer ces données à un autre formulaire qui a une zone de liste... en fait, mettre à jour la zone de liste de l'autre formulaire.

Tous les exemples que j'ai vus créent de nouvelles instances de formulaires, ce qui n'est pas idéal dans mon cas.... (car mes formulaires sont déjà ouverts).

Voici ce que j'ai obtenu jusqu'à présent.....

public delegate void EventDelegate(Object sender, EventArgs e);

public event EventDelegate MessageForListView;

if (status == 0)
{               
  value = value.ToLower();
  using (StreamWriter sw = File.AppendText(path))
  {
      sw.WriteLine(value + " " + datestamp);
      MessageBox.Show(value.ToString() + " is now registered....... ");

     /// message event required here to pass back value and datestamp to the form holding the ListViewBox

      MessageForListViewEvent += NewDriverForm_MessageForListViewEvent;

      ReSetInput();
  }
}

private void NewDriverForm_MessageForListViewEvent(object sender, EventArgs e){

 /// how do I write the data into the ListViewBox or call the reload procedure again.

}

NewDriverForm J'ai obtenu les données et je veux les envoyer à viewRegisterForm qui comporte une boîte de type listview. Le code affiché se trouve dans le fichier NewDriverForm

Merci d'avance...j'apprécie vraiment votre aide.

1voto

Mong Zhu Points 15038

Vous pouvez créer un événement statique dans NewDriverForm et spécifiez le type de données que vous voulez envoyer :

public static EventHandler<TypeOfDataToBeSend> MessageForListView; 

et passer les données dans l'appel :

MessageForListView?.Invoke(this, objectOfYourDataType);

Enregistrez maintenant cet événement dans viewRegisterForm et extraire ces informations dans la méthode de l'événement enregistré :

NewDriverForm.MessageForListView += NewDriverForm_MessageForListViewEvent;

public void NewDriverForm_MessageForListViewEvent(object sender, TypeOfDataToBeSend objectOfYourDataType)
{
      // use here the objectOfYourDataType
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X