Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - C# interagire fra form
Forum - C# / VB.NET - C# interagire fra form

Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 14:39
Giovedì, 04/09/2008
Buon..mm..pomeriggio!

Io in un progetto ho 2 form. Uno è quello principale, l'altro un tool a parte.

Ad esempio ho bisogno che al click di un pulsante presente sul "form tool", la richtextbox del form principale scriva un messaggio.

in vb.net, la parola sacra di totem (nostro unico dio) dice

Codice sorgente - presumibilmente Plain Text

  1. my.forms.form1.label1.text = "ciao"



(non guardate il "label1").. cmq in C# com'è?

PM Quote
Avatar
il pisano (Ex-Member)
Pro


Messaggi: 95
Iscritto: 02/04/2007

Segnala al moderatore
Postato alle 6:58
Venerdì, 05/09/2008
namespace FormTEST
{
  public class Form1
   {
    
     private Label1 scritta;
      
     public void SetScritta(string messaggio)
     {
         scritta = messaggio;
      }
  


//Secondo FORM

  public class Form2
   {
       Form1  primo = new Form();
       primo.SetScritta("Hello World!");
    }
  }



Questo e' uno dei sistemi  ;)


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 10:23
Venerdì, 05/09/2008
per luk3
per favore vai nella sezione humor

Ultima modifica effettuata da il 05/09/2008 alle 10:24
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:16
Venerdì, 05/09/2008
Testo quotato

Postato originariamente da il pisano:

namespace FormTEST
{
  public class Form1
   {
    
     private Label1 scritta;
      
     public void SetScritta(string messaggio)
     {
         scritta = messaggio;
      }
  


//Secondo FORM

  public class Form2
   {
       Form1  primo = new Form();
       primo.SetScritta("Hello World!");
    }
  }



Questo e' uno dei sistemi  ;)



Non puoi convertire una stringa in label, semmai sarà:
Codice sorgente - presumibilmente Plain Text

  1. scritta.Text = messaggio;


Per modificare la proprietà di un altro form non puoi crearne una nuova istanza, perchè esso è già aperto.

Risolviamo così:
Codice sorgente - presumibilmente C++

  1. static class Globals
  2. {
  3.   public static Form1 DefaultForm1;
  4.   public static Form2 DefaultForm2;
  5.   //...
  6.  
  7.   void Initialize(Form1 MainForm)
  8.   {
  9.     DefaultForm1 = MainForm;
  10.     DefaultForm2 = new Form2();
  11.     //...
  12.   }
  13. }


E poi nell'applicazione principale, al form load richiami:
Codice sorgente - presumibilmente Plain Text

  1. Globals.Initialize(this);


E, per visualizzare o accedere a tutti gli altri form:
Codice sorgente - presumibilmente Plain Text

  1. Globals.DefaultForm2.Show();
  2. //oppure
  3. Globals.DefaultForm2.Label1.Text = "Ciao";



Globals non è altro che una classe statica che contiene tutte le istanze di default di tutti i form, ossia svolge la stessa funzione di My.Forms in vb.net, solo che la devi creare tu.

Ultima modifica effettuata da Il Totem il 05/09/2008 alle 11:17
PM Quote
Avatar
il pisano (Ex-Member)
Pro


Messaggi: 95
Iscritto: 02/04/2007

Segnala al moderatore
Postato alle 18:10
Venerdì, 05/09/2008
Si vero totem ha ragione
Nel modo indicato da me i form partono subito entrambi
Hehe scrivo gli shader e non so scrivere due FORM senza provare il codice8-|

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 19:24
Venerdì, 05/09/2008
Niente, mi dice

'Initialize': impossibile dichiarare i membri di istanza in una classe statica

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 21:19
Venerdì, 05/09/2008
Scusa era static void.
Però potevi anche correggerlo tu.

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 14:57
Sabato, 06/09/2008
Testo quotato

Postato originariamente da Il Totem:

Scusa era static void.
Però potevi anche correggerlo tu.



scusa eh :rotfl:

Però nn funzia :d:d:d:d

Ultima modifica effettuata da Luk3 il 06/09/2008 alle 15:03
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:58
Sabato, 06/09/2008
Lo sai che non mi piace quando dite "non funziona". Dimmi dov'è l'errore, quel è e quando si verifica, se ce n'è uno. Se non ci sono errori, usi il codice nel modo sbagliato.

PM Quote