billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 16 juil. 2009 à 09:17
Bonjour,
Concernant les variables globales, cela dépend de ton besoin:
- S'il s'agit de variable d'application, alors tu peux travailler avec le fichier de configuration de ton application. Ainsi, tu pourras accéder facilement à tes variables que ne seront disponibles qu'en lecture (pour les modifier, il te faudra le faire à la mano). Ceci répond bien à un besoin de variables qui ne changent pas lors de l'exécution de ton appli.
Url: http://nico-pyright.developpez.com/tutoriel/vc2005/configurationsectioncsharp/
private void Initialize()
{
//Tu initialise tes variables ici (par rapport à une base de données ou peu importe...)
this.Text = "Text";
this.Number = 1;
}
public static MySingleton Instance { get { return instance; } }
}
Tu y auras accès facilement avec le code:
string text = MySingleton.Instance.Text;
- Sinon, si ton besoin est assez simple, il te suffit de faire (comme Lutinore l'a dit) uniquement une variable static dans une classe.
public class Class1
{
public static string Text = "Text";
}
string text = Class1.Text;
Voila tout,
Bonne journée,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 16 juil. 2009 à 10:24
Salut
"Ma deuxième question, est comment faire un interval pour retarder certaine fonction ? J'ai chercher mais je ne trouve toujours pas ..."
Comme dit Lutinore, Thread.Sleep(int millisec); - namespace System.Threading - bloque le thread courant. Attention donc que le thread ne répond pas. Si c'est le thread principal, ton programme aura l'air d'avoir planté (pas de réactualisation de l'image, etc. Cependant, c'est vrai qu'il s'agit d'une méthode très simple.
Si cependant elle ne te convient pas, si tu utilises Windows Forms, tu peux te renseigner sur le composant Timer - namespace System.Windows.Forms -. Si tu n'utilises pas Windows Forms, tu peux te renseigner sur la classe Timer - namespace System.Timers -.
Ces 2 classes fonctionnent à peu près de la même façon : Tu crées un objet, tu définis un intervalle, tu attaches une méthode à un événement de cet objet, puis tu fais Start() sur ton objet.
Krimog : while (!(succeed = try())) ; - NON, "LE BAR" n'est PAS un langage de programmation ! -
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 16 juil. 2009 à 08:05
Salut, C# est totalement orienté objet et la notion de portée globale n'existe pas pour les variables.. Pour partager des variables entre plusieurs classes, elle peuvent être déclarées statiques ( mot clé : static ) dans la classe principale ou dans un classe dédiée qui elle même peut être statique.
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 16 juil. 2009 à 09:25
Re,
J'ai oublié l'essentiel:
- s'il s'agit de variables relatives à ton interface: Label, Image, etc..., il te faut utiliser les fichiers "Resources" qui te permettront de facilement implémenter ces derniers pour d'autres langues: http://sharpertutorials.com/resource-files/
Voila, je crois qu'on a fait le tour.
Bonne journée,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 17 juil. 2009 à 09:16
Bonjour,
Un Thread.Sleep(..) ne requiert pas d'action de "stop" particulière. Cette action permet uniquement de faire attendre le process un temps donnée.
Au contraire, la mise en place d'un Timer (System.Timers.Timer) devra être stopper (méthode Stop()) si la propriété AutoReset est à true.
Bonne journée,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 17 juil. 2009 à 09:57
En ce qui concerne les contrôles System.Windows.Forms.Timer, ils n'ont pas de propriété AutoReset je crois, mais cependant ils continuent à appeler la méthode déléguée indéfiniment. Si tu utilises ce contrôle, tu devras donc faire un Stop() dans la méthode attachée à l'événement (contrairement à un System.Timers.Timer où tu as juste à mettre AutoReset à false).
Krimog : while (!(succeed = try())) ; - NON, "LE BAR" n'est PAS un langage de programmation ! -