Usuário com melhor resposta
C# Como ter uma variavel global para todos Forms

Pergunta
-
Ola, estou tendo umproblema com meu programa.
Eu tenho varios Forms diferentes e preciso que eles tenham um variavel em comum.
eu ja tentei criar uma classe e fazer uma variavel public, mas o problema e que no codigo fica assim:
public string variavel = "";
quando eu chamo essa classe nos Forms "Class1 classG = new Class1();" esta string zera.
eu preciso do valor q estava contido nele.
Respostas
-
No Namespace root do seu projeto, você pode criar uma classe Singleton, e colocar nela os campos que você precisará em todas as outras classes.
namespace Root { public sealed class GenericSingleton<T> where T : class, new() { private static T _instance; public static T Instance { get { if (_instance == null) _instance = new T(); return _instance; } } } }
(Exemplo adaptado do Wikipedia)
- Editado Cliffinho quinta-feira, 18 de maio de 2017 15:29
- Marcado como Resposta Levi DomingosModerator quinta-feira, 18 de maio de 2017 18:00
Todas as Respostas
-
Rodiney
Existem várias maneiras de você fazer isso.
Pode usar Cookie, Session, pode usar o método estático e muito mais.
Veja como eu fiz no link abaixo, são vídeos:
https://www.youtube.com/watch?v=8-6-Es1erX0&list=PLCOkAJmgh06riK1iWf-E3jHMFziKvACOD
Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.
Mauricio Junior - Comunidade www.ecode10.com- Sugerido como Resposta Mauricio-Junior quinta-feira, 18 de maio de 2017 10:46
- Marcado como Resposta rodiney garcia quinta-feira, 18 de maio de 2017 17:36
- Não Marcado como Resposta Levi DomingosModerator quinta-feira, 18 de maio de 2017 18:00
-
No Namespace root do seu projeto, você pode criar uma classe Singleton, e colocar nela os campos que você precisará em todas as outras classes.
namespace Root { public sealed class GenericSingleton<T> where T : class, new() { private static T _instance; public static T Instance { get { if (_instance == null) _instance = new T(); return _instance; } } } }
(Exemplo adaptado do Wikipedia)
- Editado Cliffinho quinta-feira, 18 de maio de 2017 15:29
- Marcado como Resposta Levi DomingosModerator quinta-feira, 18 de maio de 2017 18:00
-
Então Rodiney, vou tentar ser mais simples ainda que a sugestão do Cliffinho.
O seu projeto provavelmente tem um "Program.cs" (se você não fez de outro jeito).
Nele tem o "Main(string[])" que abre seu Form principal.Nessa classe você (ou em qualquer outra que quiser) pode colocar uma variável "static", que basicamente é uma variável "acessável por qualquer classe ou instância".
Veja:
namespace Abc { //Coloque "public" nessa classe - se preferir public static class Program { public static string MinhaString = ""; static void Main(string[] args) { //'... aqui abre o form principal etc } } }
Os Forms podem ler e gravar de "Abc.Program.MinhaString = XXXX".
-