VARIAVEL GLOBAL

NETVOO 19/11/2015 22:26:42
#454192
Pessoal preciso de uma variavel que fique declarada em algum local do meu codigo com o valor atribuido por um txtbox e eu gostaria de usar essa varial em outros form's.
Algum poderia posta lagum exmplo de como isso pode ser feito.
KERPLUNK 19/11/2015 22:56:17
#454194
Mais atenção ao português aí. Não custa nada e ajuda a quem quiser fazer uma procura pelo mesmo assunto.

Bom, em se tratando de .NET isso não existe. Pelo menos não da mesma maneira que é no VB6 onde qualquer variável global ou public estará disponível durante todo o tempo de execução. O que você vai fazer é ter uma classe que vai ler os valores de algum lugar, como um arquivo .config por exemplo, ou um banco de dados. Existem muitos exemplos disso aqui mesmo no VBMania. Mais importante que o [Ô]exemplo[Ô] de código, é entender o que está fazendo. Faça uma busca e vai ver que tem muita coisa aqui sobre isso.
JABA 19/11/2015 23:24:01
#454198
Não acho o mais recomendado, mas você poderia criar essa variável dentro da classe Program.

public class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

[txt-color=#e80000]public static TextBox seuTextBox { get; set; }[/txt-color]

}

// Pra usar faça assim:

MessageBox.Show(Program.seuTextBox.Text);
NICKOSOFT 19/11/2015 23:29:35
#454199
Coloca um module e cria sua variavel public ali, de qq ponto do codigo vc pode modificar ou resgatar seu valor
Ja é um bom remendo
Humm agora q vi, no csharp nao lembro se tem module
NETVOO 20/11/2015 00:24:50
#454200
Citação:

:
Mais atenção ao português aí. Não custa nada e ajuda a quem quiser fazer uma procura pelo mesmo assunto.

Bom, em se tratando de .NET isso não existe. Pelo menos não da mesma maneira que é no VB6 onde qualquer variável global ou public estará disponível durante todo o tempo de execução. O que você vai fazer é ter uma classe que vai ler os valores de algum lugar, como um arquivo .config por exemplo, ou um banco de dados. Existem muitos exemplos disso aqui mesmo no VBMania. Mais importante que o [Ô]exemplo[Ô] de código, é entender o que está fazendo. Faça uma busca e vai ver que tem muita coisa aqui sobre isso.



KERPLUNK, vi sim tem muita coisa sim, tentei vários, estou sentado aqui na cadeira dês de hoje as 7 da manha até agora quebrando a cabeça com isso, peguei vários modelos aqui e em outros sites, porem minha variável sempre fica vazia e meu select não funciona no outro fom.
E pelo horário do meu post da para ver que tentei o dia inteiro antes de postar a duvida aqui, pois acho que se usado com respeito e moderação o vbmania é para isso mesmo, me desculpe se erro no português ou se ando postando muitas dúvidas ultimamente aqui no vbmania, mais fiquei anos com vb6 agora estou tentando o C# devido a uma iniciativa do modelo de webservice que você me passou, então paciência aeeeeeeee, pois não tenho nenhum conhecimento em c# .net.

Pra vocês que estão trabalhando com .net a algum tempo um detalhe desse é resolvido em 1 minuto, mais pra mim gasto dois dias, então quando ver ai meu posts pedindo ajuda não é por que eu quero algo pronto não é por que eu já tentei muito.
NETVOO 20/11/2015 00:28:53
#454201
Citação:

:
Não acho o mais recomendado, mas você poderia criar essa variável dentro da classe Program.

public class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

[txt-color=#e80000]static TextBox seuTextBox { get; set; }[/txt-color]

}

// Pra usar faça assim:

MessageBox.Show(Program.seuTextBox);



Eu poderia usar esse :
MessageBox.Show(Program.seuTextBox);

Em outro form, tipo no form2 chamar essa função que está pegando o valor do form1 e que usa o form1 em sua declaração Application.Run(new Form1()); ?
JABA 20/11/2015 00:42:25
#454202
é só você fazer uma atribuição nele e utiliza-lo onde desejar.

//Para fazer uma atribuição
Program.seuTextBox = Form2.TextBox1;


//Para exibir o seu conteúdo
MessageBox.Show(Program.seuTextBox.Text);



        private void Form1_Load(object sender, EventArgs e)
{
Form2 form2 = new Form2();
Program.seuTexBox = (TextBox) form2.Controls[[Ô]TextBox1[Ô]];
MessageBox.Show(Program.seuTexBox.Text);
}
NICKOSOFT 20/11/2015 05:30:13
#454204
não sei se entendi direito ao longo das postagens, mas não é q seja uma variável global, vc quer enviar algo de um form ao outro?
veja isso q vai dar uma luz
http://www.macoratti.net/15/09/c_frmi1.htm
GUIMORAES 20/11/2015 09:23:21
#454206
Resposta escolhida
NETVOO,

A passagem de valores em formulários no .net pode ser feita de várias formas, mais não existem uma forma [Ô]Mais[Ô] recomendada (ou mais correta), isto depende muito da situação.
Você pode declarar uma variável publica para o formulário que irá receber o valor, como o exemplo abaixo.

Formulário que irá receber.

  

public partial class Form2 : Form
{

public string variavelQualquer { get; set; }

public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(variavelQualquer);
}
}



Formulário que irá chamar o outro e passar o parâmetro.
  

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 formulario = new Form2();
formulario.variavelQualquer = [Ô]Texto que eu desejar![Ô];
formulario.ShowDialog(this);
}
}



Assim como o exemplo acima, também podemos criar uma classe com variáveis estáticas, que podem ser enxergadas por toda a aplicação.

NETVOO 20/11/2015 10:51:01
#454214
Citação:

:
NETVOO,

A passagem de valores em formulários no .net pode ser feita de várias formas, mais não existem uma forma [Ô]Mais[Ô] recomendada (ou mais correta), isto depende muito da situação.
Você pode declarar uma variável publica para o formulário que irá receber o valor, como o exemplo abaixo.

Formulário que irá receber.

  

public partial class Form2 : Form
{

public string variavelQualquer { get; set; }

public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(variavelQualquer);
}
}



Formulário que irá chamar o outro e passar o parâmetro.
  

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 formulario = new Form2();
formulario.variavelQualquer = [Ô]Texto que eu desejar![Ô];
formulario.ShowDialog(this);
}
}



Assim como o exemplo acima, também podemos criar uma classe com variáveis estáticas, que podem ser enxergadas por toda a aplicação.



Ok segue um anexo de como estou fazendo,e certeza que é erro estrutural erro no código mesmo, da uma olhada onde estou errando e se possível manda ele de volta pra mim ver onde estou errando.
GUIMORAES 20/11/2015 11:25:03
#454224
Acho que você não entendeu ainda o conceito de orientação a objetos.
Você preencheu o objeto, mais instanciou novamente ele no outro formulário (new), o que diz que ele é um novo objeto e não aquele que você já havia preenchido.
O mesmo que já foi instanciado no formulario 1, deve ser passado como parâmetro para o outro formulário.

Segue anexo.
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas