Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brunoguitarman

[Resolvido] Como faço pra um form usar funções do form que o chamou?

Recommended Posts

Seguinte: estou fazendo um editor de imagens.

 

Ele tem uma parte principal, na qual posso abrir imagens e fazer algumas edições, como espelhamento, modificar pra tons de cinza, etc.

Agora estou incluindo ajustes de brilho e contraste, mas achei mais interessante colocar essa parte num menu chamado "Editar", ao estilo do photoshop (tipo isso aqui http://www.portaldigidesign.com.br/images/...04175429-3.jpg), aí o usuário vai lá e clica na opção que quiser que abre uma janelinha pro ajuste.

Até aí tudo bem.

 

O problema é que os objetos que estou querendo manipular estão no form principal, então queria saber como acessá-los a partir desse novo form.

Vou tentar exemplificar aqui o que estou querendo fazer:

 

Tenho o menu editar->ajustar brilho, que ao ser clicado executa isto:

 

private void ajustarBrilhoToolStripMenuItem_Click(object sender, EventArgs e)
		{
			AjustarBrilho = new FormAjuste();
			AjustarBrilho.Text = "Ajustar Brilho";
			AjustarBrilho.Show();
		}

Aí lá dentro tem uma barrinha tipo aquela do photoshop, fiz um visual bem semelhante, então quero que, a exemplo do mesmo, quando eu for mexendo nela, a imagem vá se modificando e, quando clicar no botão OK, essa modificação seja efetivada.

 

A minha imagem é declarada dentro do form principal, como se pode ver a seguir:

 

imagem = new Bitmap(openFileDialog1.OpenFile());

As funções de alteração dela pretendo manter todas dentro do form principal. Talvez mais tarde até crie tipo uma biblioteca, ou sei lá, mas por enquanto permanece no form principal mesmo.

 

O problema, é, como disse, elas estão no form principal e foi ele quem chamou o "AjustarBrilho" e eu não sei como faço para esse form manipular coisas, chamar funções que estão no form principal.

 

Alguém poderia me dar uma idéia?

 

Não sei se ficou bem claro, qualquer coisa me dêem um toque que tento explicar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é bem isso que você quer, mas se você quiser usar uma variável do form principal neste segundo form, declare-a como "public" no form principal e chame-a no outro, por exemplo em vb:

 

Public imagem = new Bitmap(openFileDialog1.OpenFile()); (form principal)

FormPrincipal.imagem.MakeTransparent() (form secundário)

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é bem isso que você quer, mas se você quiser usar uma variável do form principal neste segundo form, declare-a como "public" no form principal e chame-a no outro, por exemplo em vb:

 

Public imagem = new Bitmap(openFileDialog1.OpenFile()); (form principal)

FormPrincipal.imagem.MakeTransparent() (form secundário)

 

Abraços

 

Não deu certo. Quando coloco, no caso, o "FormPrincipal." não aparece "imagem" nem nenhuma função que está declarada com o "public".

 

Na verdade, quando digito esse "FormPrincipal" me parece que ele seria um tipo, não o form propriamente dito. Eu não teria que fazer uma declaração parecida com o que eu faço com o

 

AjustarBrilho = new FormAjuste();

claro que sem o "new" e com "FormPrincipal()" no lugar de "FormAjuste()", mas algo do tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm... entãoa cho que não estou entendendo mt o que você quer

 

você quer criar um novo form por código, seria isso?

 

Ou usar variáveis de um form em outro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm... entãoa cho que não estou entendendo mt o que você quer

 

você quer criar um novo form por código, seria isso?

 

Ou usar variáveis de um form em outro?

O que eu quero é mais ou menos assim:

 

Tenho o "FormPrincipal" e ele tem uma função, digamos "Funcao_do_form_principal", que é declarada como public.

 

Nisso eu adiciono um outro windows form ao projeto, digamos que eu o chame de "Novo_windows_form".

 

Agora, dentro do "FormPrincipal" eu tenho um botão que quando é clicado executa o seguinte código:

 

Novo_windows_form FormFilho = new Novo_windows_form();
FormFilho.Show();

Bom, agora eu tenho o "FormFilho", que é do tipo Novo_windows_form, certo?

 

Aí lá dentro do "FormFilho" eu faço alguma coisa, clico num botão e quero que ele acesse a função "Funcao_do_form_principal".

 

Como faço isso?

 

"FormPrincipal" é o form inicial do projeto, se eu mandar executar o projeto começa nele, mas ele não recebeu um nome, na verdade "FormPrincipal" é um tipo (ao menos eu acho) e eu não posso fazer algo do tipo "FormPrincipal.Funcao_do_form_principal()".

 

Consegue entender a diferença que eu estou tentando mostrar?

 

"FormFilho" é um form do tipo "Novo_windows_form" e no momento em que eu o declaro dentro do form principal eu posso acessá-lo, mas eu não sei como faço para acessar o form principal através do "FormFilho".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a resposta em um outro tópico.

 

Pra quem tiver a mesma dúvida que eu, a resposta é a seguinte:

 

você abre o Form2 através do Form1, certo?

Altere a propriedade Owner do Form2 para o Form1, ou seja:

Form2 form2 = new Form2();
form2.Owner = this; //Considerando que este código estará no Form1
form2.Show();


Daí de dentro do Form2 você fará:

Form1 form1 = (Form1)this.Owner;
form1.label1.Text = "Alterado";

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.