[PROBLEMA] [C#] Applicazione multiform

  • Il Forum di Tom's Hardware, la più grande community dedicata all'Hardware e all'Informatica. Iscriviti Ora!
#1
Salve, sono passato dal vb .net al c# e li ho trovati molto simili, oltre alla sintassi però cambia anche il modo di ideare il tutto, che in vb sembra molto più facilitato, ma di tanto.

Ad esempio non riesco a mettere due form insieme, nello specifico l'app deve mettere un form per schermo, sempre lo stesso in più istanze.

C#:
block = new blockS[0];
            foreach (var item in Screen.AllScreens)
            {
                
                Array.Resize(ref block, block.Length + 1);
                int lc = block.Length - 1;
                block[lc] = new blockS();
                block[lc].Show();
            }
(Si, manca tutto il sistema che posiziona e edita i form, ma quello è il meno)
Appaiono i form ma dopo qualche secondo di "Buffering" si richiudono da soli.

Se uso l'istruzione "ShowDialog" invece giustamente si pianta tutto aspettando una risposta dal form...

In vb tutti questi problemi non c'erano... Sicuramente sarà una cosa semplice ma ci sto sbattendo la testa da ore :muro:
 
2,725
1,786
Hardware Utente
#2
Immagino che il vettore blockS sia di tipo Form.
Dove si trova nel tuo programma quel pezzo di codice? Il mio sospetto e' che il Array blockS vada fuori scopo.
Ricorda che una applicazione WindowsForm in C# e' attiva finche' e' attivo il Form specificato nell'istruzione Application.Run()

PS si, VB.NET e C# sono abbastanza simili, entrambi usano il framework .NET, ma la loro sintassi e' molto diversa. VB e' piu' semplice perche' e' creato per chi "viene" dal vecchio Visual Basic, C# e' invece piu' rigoroso. Ad ogni buon conto VB.NET perde molto della caratteristica RAD (Rapid Application Development) tipica del Visual Basic, di fatto ormai non vedo piu' il bisogno di usarlo invece del piu' potente C#.
 
#3
Immagino che il vettore blockS sia di tipo Form.
Dove si trova nel tuo programma quel pezzo di codice? Il mio sospetto e' che il Array blockS vada fuori scopo.
Ricorda che una applicazione WindowsForm in C# e' attiva finche' e' attivo il Form specificato nell'istruzione Application.Run()

PS si, VB.NET e C# sono abbastanza simili, entrambi usano il framework .NET, ma la loro sintassi e' molto diversa. VB e' piu' semplice perche' e' creato per chi "viene" dal vecchio Visual Basic, C# e' invece piu' rigoroso. Ad ogni buon conto VB.NET perde molto della caratteristica RAD (Rapid Application Development) tipica del Visual Basic, di fatto ormai non vedo piu' il bisogno di usarlo invece del piu' potente C#.
Pensandoci potrebbe essere quello il problema...
Quella parte di codice si trova in una funzione che probabilmente viene eseguita in modo asincrono, nell'evento di ricezione messaggio della libreria di telegram.

Application.run invece non c'è in nessuna parte del codice :skept:

Se utilizzo application run per far vedere il form si pianta nuovamente tutto fino alla sua chiusura...
Post unito automaticamente:

Come pensavo... È dovuto all'asincronia della funzione di telegram, mi inventerò un modo per risolvere... anche se spesso le mie soluzioni sono al quanto brutali :asd:
Se vi viene in mente qualcosa di raffinato fatemi sapere.
 
Ultima modifica:

Discussioni Simili