CRIAR EVENTO

INACIOARANTES 01/10/2013 02:09:34
#429438
Olá a todos, bom gostaria da ajuda dos colegas para tirar uma dúvida, programo em VB a algum tempo e começei a programar em C# agora e preciso de ajuda.

Bom o lance é o seguinte, eu tenho uma aplicação, nesta aplicação eu criei um UserControl, e neste UserControl eu preciso criar um evento para que meu Window principal receba um valor.

No UserControl eu tenho 6 botões, o usuário irá clicar em 1 botão e preciso do retorno deste valor na janela principal, este valor é um int mesmo. Pois na janela principal eu vou acionar um evento de acordo com este retorno.

Obrigado a todos.
SABIDAOXD 18/11/2013 09:24:40
#431216
Para acessar qualquer evento é só ir nas propriedades do objeto e ir em events

para retornar algum valor do seu usercontroll para a tela principal, passe a form principal como parâmetro e atribua este para uma variável do tipo FormPrincipal

Código do Usercontroll
Citação:



Form1 frm;
public Usercontrol1(Form1 frm)
{
this.frm = frm;
}



ai vc pode chamar essa frm como se fosse sua form
TECLA 18/11/2013 21:13:47
#431241
Tente o seguinte:

No UserControl, crie um Delegate, um Event e uma variável de retorno.

public delegate void MeuDelegateEventHandler(object sender, EventArgs e);
public event MeuDelegateEventHandler MeuEvento;
public int RET = 0;


Em seguida, no evento clique do botão, faça uma referência ao evento criado e atribua o valor do tipo int para a variável.

private void button1_Click(object sender, EventArgs e)
{
if (MeuEvento != null)
{
RET = 1;
MeuEvento(this, e);
}
RET = 1;
}

private void button2_Click(object sender, EventArgs e)
{
if (MeuEvento != null)
{
RET = 2;
MeuEvento(this, e);
}
RET = 2;
}

Por fim, no form, é só escrever seu código no evento criado do UserControl.

private void userControl11_MeuEvento(object sender, EventArgs e)
{
try
{
MessageBox.Show(userControl11.RET.ToString());
}
catch (Exception)
{
throw;
}
}


Qualquer dúvida é só postar!
Faça seu login para responder