Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
18/01/08 21:22
punkettone90
ciao a tutti!

provengo da un lontano mondo chiamato pascal dove tutto era semplice ma purtroppo anche ahimè, poco produttivo; così mi sono dato al C# che anche se più complesso permette una volta preso mano, di fare cose molto interessanti.
la mia domanda è come fare a creare un programma che non generi nessun windows form fino a che non si verifica un certo evento, voglio inoltre inserire un oggetto della classe timer il cui eventi "tick" comporti il caricamento del window form.
credo debba lavorare sul program.cs che è il punto d'ingresso dell'applicazione, ma dopo li come posso gestire l'evento tick?

grazie!!!! 8-|
aaa
19/01/08 14:21
Il Totem
Nello stesso modo in cui lo gestisci nella windows form. Crei un timer nel modulo, lo avvii in Main e scrivi un gestore d'evento. Posso provare a postarti un codice, tradotto con un convertitore vb.net-C#.
 class Module1
 {
     public Timer tmrApp = new Timer();
    
     public void Main()
     {
         tmrApp.Tick += tmrApp_Tick;
         tmrApp.Interval = 2000;
         tmrApp.Start();
     }
    
     private void tmrApp_Tick(object sender, EventArgs e)
     {
         tmrApp.Stop();
         Application.Run(My.Forms.Form1);
     }
 }
Ultima modifica effettuata da Il Totem 19/01/08 14:22
aaa
19/01/08 21:48
punkettone90
molto probabilmente il codice che mi hai dato è c++
c# sicuramente no visto che questo linguaggio non accetta metodi al di fuori di una classe

posto quello che sono riuscito a fare


using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace promemoria
{
    static class Program
    {
        /// <summary>
        /// Punto di ingresso principale dell'applicazione.
        /// </summary>
        

        class gestione_tempo
        {

            public Timer tempo = new Timer();
            
            
            public  gestione_tempo()
            {
                
                this.tempo.Interval = 100;
                this.tempo.Start();
                this.tempo.Tick += new EventHandler(fermati);
                
            }           

        
            
            
            public void fermati(object sender, EventArgs e)
            {
                this.tempo.Stop();
                Application.EnableVisualStyles();

                Application.Run(new Form1()); 

            }


        }


        [STAThread]
        static void Main()
        {

            gestione_tempo miaclasse = new gestione_tempo();
            

      
        }
    }
}



questo è il file program.cs
non ci sono errori di compilazone, ma non riesco a gestire l'evento tick :(

potete darmi una mano?
Ultima modifica effettuata da Il Totem 20/01/08 8:46
aaa
20/01/08 8:53
Il Totem
Il codice è giusto da quello che leggo. Prova ad aumetare l'interval a, diciamo, 2000: forse non vedi la differenza con 0.1s.

P.S.: non fidarti di quello che scrive il codice php sui sorgenti. So quello che faccio e conosco il .net molto bene: il codice che ti ho dato è indiscutibilmente C#. Anche perchè in C++ non c'è il tipo EventArgs o la classe Application, né è possibile aggiungere handler d'evento e ad ogni modo i metodi erano nella classe Module1, per la quale noi vbnettisti usiamo solitamente i moduli.
aaa
20/01/08 19:05
punkettone90
anche mettendo a 2000 non cambia nulla
comunque avevi ragione te, è c# il codice che mi hai dato, non mi ero accorto della classe module1. comqunque resta il problema, ho usato una classe statica che mi da l'ora corrente, io ho bisogno che quando viene quell'ora si carichi il form.
per fare questo ho bisogno della classe timer che ogni diciamo 0,1 secondi mi controlli se l'ora x è avvenuta e in quel caso faccia comparire il form.

come posso fare? in particolare ho problemi nel gestire l'evento tick
aaa
20/01/08 19:13
punkettone90
l'altra cosa che ho provato è lasciar perdere il file del progetto "program.cs" e lavorare invece sul codice del form ma anche mettendo la proprietà "enabled" sia su false, sia su true, sia chiamando il metodo "hide" il form si vede lo stesso

cosa posso fare?
aaa
21/01/08 16:47
Il Totem
Prova as mettere Opacity a 0 (totalmente trasparente) e ShowInTaskBar = False (così non si vede nella barra delle applicazioni). Oppure metti, dopo il caricamento dell'interfaccia, FormBorderStyle = ToolWindow e Visible a False.
aaa