none
Como faço para declarar a variável uma vez e usar ela em vários métodos?

    Question

  • No meu programa cada vez que um checkBox ou radioButton é acionado eu tenho que somar ou subtrair um determinado valor de uma variável.

    E quando eu clico num botão o valor total é alocado na propriedade Text de uma Label.

    O problema é que não consigo tornar a variável acessível em todos os métodos, eu tenhu que re-declarar sempre, e sempre usando essa sintese:

    double varNome = 0;

    Mas se eu declarar assim dentro do button como vou somar? Porque eu acabo de zerar tudo que estava alocado nela.

    Espero ter conseguido explicar... Vou dormir... Boa noite e boa sorte a todos.

    EX:

    private void checkBox4_CheckedChanged(object sender, EventArgs e)

    {

    double lanche = 0;

    if (chkQueijo.Checked)

    {

    lanche += 0.40;


    }


    else

    {

    lanche -= 0.40;

    listIngredientes.Items.Remove(chkQueijo.Text);

    }

    Agora eu tento revelar o resultado:

    private void btnCalcular_Click(object sender, EventArgs e)
            {
                label3.Text = lanche;
            }
    Dá um erro dizendo que 'lanche'não existe no contexto.

    Eu já tentei declarar antes do form (declarar na classe antes de tudo) e ainda usando o Public, mas dentro do botão ainda fica com erro.

     

     

    Wednesday, February 24, 2010 6:39 AM

Answers

All replies

  • Já tentou declarar essa variável fora do método como:

    public double lanche = 0;
    Wednesday, February 24, 2010 11:05 AM
  • adicione uma classe com os membros públicos e estáticos. Você vai ter acesso a eles no projeto inteiro:

    public class ClassProduto
        {  
            public static string sDescricao = "";
            public static int sCodigo = 0;
            public static double sPreco = 0;
    }


    pra ler os registros você faz:

    MessageBox.Show(ClassProduto.sDescricao);

    e pra atribuir:

    ClassProduto.sPreco = Convert.ToDouble(txtPreco.Text) * 3;
    Wednesday, February 24, 2010 11:10 AM
  • Vou testar as alternativas. Muito obrigado pela ajuda pessoal!
    Thursday, February 25, 2010 4:31 AM
  • Daniel, eu fiz assim:

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public class Lanche
            {
                public double lanche = 0;
            }

            public Form1()
            {
                InitializeComponent();
                chkAlface.Text = "Unchecked";
            }

    Mas quando eu uso a variável lanche dentro de evento como o de um button ela aparece sublinhada informando o seguinte erro: "The name 'lanche'do no exist in the current context".

    Minha ideia era um programa para lanchonete, para você montar seu lanche e, como cada ingrediente tem um preço, todos os valores vão sendo somados a variável lanche e no final eu esponho o valor através de um Label.

    Então eu tenho uma série de checkBoxs e radioButtons representando os ingredientes escolhidos e um botão para calcular o valor final.

    Mas não consigo usar a essa expressão, por exemplo: label.Text = lanche;

    Diz que lanche não faz parte do contexto.

    Thursday, February 25, 2010 4:48 AM
  • é que você colocou o código da classe dentro do form.

    Adicione uma classe ao seu projeto clicando com o botão direito nele, add>class

    e dentro dela coloque o código.
    Thursday, February 25, 2010 11:14 AM
  • Valeu Daniel!!! É verdade, eu não segui o escopo! vlw pela informação!
    Friday, February 26, 2010 2:45 AM
  • Conseguiu resolver o problema?
    Friday, February 26, 2010 11:20 AM
  • Èder, boa noite.

    Nesse caso você tera que colocar essa váriavel como publica.


    public double varNome = 0;

    somente assim você ira ter acesso com todos os metodos de sua classe.
    Sunday, February 28, 2010 10:39 PM
  • Paulo,

    Tenho que discordar... Se você declarar a variável como private, ela estará, sim, disponível para ser acessada dos métodos daquela classe, mas, não estará visível de fora da classe...

    Já se você declarar como public, ela estará visível dentro e fora da classe... Essa é a diferença...
    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    Tuesday, March 02, 2010 12:06 PM
    Moderator
  • Lembrando que mesmo um atributo private pode ser acessado externamente, com métodos get e set apropriados!
    Tuesday, March 02, 2010 12:51 PM