Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    [C# 2005] Semplicissimo quesito classi

    Buona domenica a tutti.
    Ho una piccola applicazione C# 2005 con un form form1 ed una classe class1; dalla class1 voglio modificare il colore di sfondo del form1; inserendo il codice che vi posto sotto pur eseguendosi il programma correttamente senza messaggi di errore il colore di sfondo del form1 non cambia. Cosa sbaglio? Grazie a tutti.

    form1 myForm = new form1();
    myForm.BackColor=System.Drawing.Color.Fromname("Re d");

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra che manchi un

    myForm.Show();

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Quando la classe viene eseguita il form è già attivo (più che altro è il form di defaul, che si apre appena si avvia l'applicazione). Difatti la classe è richiamata dalla routine form.load del form di avvio.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... un attimo, non mi tornano alcune cose ...

    Intanto, non si eseguono delle classi, ma semmai si esegue il codice degli oggetti di una certa classe una volta istanziati (a parte i membri statici, ma non mi sembra il caso).

    Secondo, appunto, se istanzi un *nuovo* oggetto di tipo Form1 con la new, mi dici come fa il form ad essere gia' attivo ?

    Il form di avvio e' un altro form rispetto a quello creato.

    Ripeto ... manca lo Show ...

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Bene bene ora tornano a me ti ringrazio. Allora lasciamo stare il quesito nei termini in cui te l'ho posto. Alla luce delle tue illuminanti dritte ho tolto la parola new ma ora leggo un messaggio di errore. Perciò più semplicemente ti chiedo: nella mia situazione (form1 già aperto) vorrei cambiare il colore di sfondo di quel form ma vorrei provare a farlo da una certa classe class1 che ho creato selezionando aggiungi nuovo elemento -> nuova classe. Come faccio? Grazie in anticipo!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Aggiungere una classe non basta.

    Devi istanziare un oggetto di quella classe ...

    Spiegati meglio, magari con un esempio di codice, circa quello che vuoi fare ...

    Forse, ma e' una mia impressione, non hai chiarissimi tutti i concetti della OOP ...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Subito! (si hai ragione ma la buona volotà ti assicuro è tanta!).

    La mia win application in C# 2005 comprende un form form1 ed una classe cls1. Voglio fare in modo che il colore del form1 venga 'modificato' dalla classe cls1 e non dal codice del form, e questo perché il cambio colore è solo una di varie operazione che saranno eseguite su quel form e che, per meglio strutturare il mio codice, voglio provare a collocare in una classe separata.

    Ora, nel file cls1 c'è la classe cls1 ed al suo interno ho creato la mia public void Colore() che al suo interno ha solo il comando che ho inserito nel primo messaggio. Nel file form1 invece c'è la routine form1.load e qui ho inserito il codice

    class1 myClass = new class1();
    myClass.Colore();

    Tutto qui. Solo che non raggiungo il risultato voluto. Come cambieresti tu il colore di un form, da un comando ubicato in una classe esterna al form? Grazie di tutto

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il metodo Colore deve avere due parametri, il form su cui agire e il colore da assegnare (a meno che non sia costante).

    Modifica il metodo Colore nella classe in modo che accetti e tratti i parametri e passali quando chiami il metodo ...

    Dato che stai imparando, usa la terminologia corretta ... tu chiami un metodo (Colore) dell'oggetto (myClass) di classe Class1 (e attenzione al minuscolo/maiuscolo che e' importante in C#).

    Io scriverei

    codice:
        class Class1
        {
            public void Colore(Form1 frm, System.Drawing.Color bc)
            {
                frm.BackColor = bc;
            }
        }
    e nel tuo form

    codice:
        Class1 myClass = new Class1();
        myClass.Colore(this, System.Drawing.Color.Red);

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Oregon non so come ringraziarti mi stai schiarendo le idee moltissimo. Come posso passargli, in particolare, il form su cui agire? Potresti farmi un brevissimo esempio della sintassi e del modo di richiamare il metodo? In particolare del modo di richiamarlo, per il quale ti chiedo lumi! Come indicare nel comando che chiama il metodo colore il form? Posso inserire ad esempio: colore(this, red)?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ho modificato il post precedente mentre tu scrivevi ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.