none
C# Como ter uma variavel global para todos Forms RRS feed

  • 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.

    quinta-feira, 18 de maio de 2017 01:18

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)



    quinta-feira, 18 de maio de 2017 15:26

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

    quinta-feira, 18 de maio de 2017 10:46
  • 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)



    quinta-feira, 18 de maio de 2017 15:26
  • 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".

    sexta-feira, 19 de maio de 2017 19:56
  • Pior que é bem melhor mesmo :v
    sábado, 20 de maio de 2017 19:30