La transmission de valeurs entre une classe et une forme

Je suis assez novice en C# -, mais tout s'est bien passé à ce point.

Je commence avec une forme et une classe qui n'a plus de travail (non statique et dans la partie de programme). J'instancie un objet de la classe dans le formulaire 1 et faire un journal dans.

Puis-je passer à la prochaine formulaire form2. En fait, la classe n'a que. J'ai une méthode, qui contient la ligne:

this.f2 = new Form2();

et puis:

f2.Show();

f2 est un membre de la classe du type de Form2 - le tout fonctionne très bien jusqu'à ce point.

Ce Form2 se compose d'une grande zone de texte dans laquelle je veux afficher des événements de réseau. Le gestionnaire d'événement fonctionne très bien - mais la référence à la forme ne semble tout simplement pas de travail. Si je ne

f2.tetBox1.Text = "Some text";

il ne peut pas modifier le texte dans la zone de texte.

Ce que je fais mal ici?

Voici une description plus détaillée de ce que je fais:

Form1 passe quelques informations de connexion à myProg, étant une instance de MyClass. Si la connexion a réussi, Form1 appels myProg.makeForm();

C'est ce que la méthode de MyClass ressemble:

public void makeForm() {
            this.f2 = new Form2();
            f2.Show();
            this.sendString("start f2");
}

C'est MyClass.sendString():

private void sendString(string text) {
            SystemSounds.Beep.Play();
            this.f2.setTextBox(text);
}

De ces appels, comme vous le voyez, setTextBox() de Form2 - dont j'ai mis en place, comme proposé ici. La chose étrange est, que jusqu'à ce moment, tout fonctionne bien. La Form2 obtient montré un textBox1 contient "démarrer f2" - comme prévu. Mais lorsqu'un événement arrive, le texte dans textBox1 ne change pas. le bip obtenir joué tous les droit - de sorte que la méthode sendString() est appelée bien.

Une chose que j'ai observé: Si le bip est posé après l'appel à this.f2.setTextBox(text);, il n'est pas joué si la méthode est appelée par le gestionnaire d'événements.

f2, btw., est un membre privé de MyClass:

private Form2 f2;
  • Qu'entendez-vous par doesn't seem to work. Est-il compiler? Pensez-vous réellement obtenir un message d'erreur? Est tetBox1 un membre du public de form2?
  • S'il vous plaît montrer le code, mais pas de vidage de deux formes' .cs fichiers.
  • double possible de le partage de données entre les formulaires
  • Pour ton edit: ce qui est le gestionnaire d'événement que vous vous abonnant à? Si ce n'est pas déclenché dans le thread de l'INTERFACE utilisateur, alors c'est votre problème.
  • Le gestionnaire d'événement fait partie d'une bibliothèque que j'utilise (openmetaverse). Je ne comprends pas tout ce que vous dites ici. Tout se passe dans MyClass et le gestionnaire d'événement appelle la fonction - il émet un bip.
InformationsquelleAutor user2129872 | 2013-03-03