vAlfonso 0 Denunciar post Postado Fevereiro 28, 2015 Boa tarde, Estou com um problema nas ações (LostFocus, GotFocus, Click...) do meu textbox em VB .net. Este textbox é de um componente que desenvolvi para máscaras numéricas, pois a máscara do textbox do .net é muito ruim. Então neste componente eu tenho várias ações, como no LostFocus que ele formata o campo, como abaixo: If TextBox1.Text = "" Then TextBox1.Text = "0" End If If Decimais > 0 Then TextBox1.Text = Format(CDbl(TextBox1.Text), "###,###,###,###,###,###,###,##0" & "." & StrDup(Decimais, "0")) Else TextBox1.Text = Format(CDbl(TextBox1.Text), "###,###,###,###,###,###,###,##0") End If Portanto quando eu vou executar o LostFocus do campo, executa esta função que está lá na classe do componente, e não executa o LostFocus do objeto que instanciei no formulário. Por exemplo, eu quero calcular o valor total do item quando o foco sair do campo quantidade, então eu tiro o foco da quantidade e ele executa somente esta função acima, e a função do LostFocus do campo no formulário não. Alguém já passou por isso ou consegue alguma solução para este problema? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Março 3, 2015 Você está dizendo que sua função está sobrepondo o evento? Compartilhar este post Link para o post Compartilhar em outros sites
vAlfonso 0 Denunciar post Postado Março 3, 2015 Sim, no caso este Textbox fica em um componente, dai eu adiciono ele no projeto, e este text já tem suas ações, e quando eu instancio ele em outra tela para usar ele, ele não executa as ações do text que instanciei, ele executa somente o lostfocus la da classe do componente. Um exemplo: - Componente Private sub Textbox1_LostFocus(sender as ..., e as ..) Handles Textbox1.LostFocus 'Função 1 'Formatação do cmapo numérico End sub - Formulario onde instanciei Private sub quantidade_LostFocus(sender as ..., e as ..) Handles quantidade.LostFocus 'Função 2 'calculo da quantidade (exemplo) End sub E quando da o lostfocus do campo que instanciei, ele executa somente o LostFocus do componente, que é a formatação, e o do formulário não. Compartilhar este post Link para o post Compartilhar em outros sites
Dan Borges 26 Denunciar post Postado Março 3, 2015 Você está sobrecarregando um evento? Creio que isso não seja possível, pelo menos em C# não creio que seja. Em VB pode usar delegates? Assim seu evento chama outro evento. Talvez isso seja o mais recomendado, mas não tenho como testar, veio em mente agora. http://www.macoratti.net/11/05/c_dlg1.htm https://msdn.microsoft.com/en-us/library/ms172877.aspx https://msdn.microsoft.com/en-us/library/ms172879.aspx http://www.macoratti.net/09/07/vbn_dlg1.htm Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Março 4, 2015 Esse seu componente tem os próprios eventos? Não estou entendendo, ele já é um componente como um textbox? Compartilhar este post Link para o post Compartilhar em outros sites
vAlfonso 0 Denunciar post Postado Março 6, 2015 Sim, o componente tem seus próprios eventos e eu só crio uma instancia dele no meu formulário. Mas se eu quiser eu posso debugar o código do componente, eu coloco o break point lá no LostFocus por exemplo do componente vai tranquilo. Mas está acontecendo que ele executa somente o LostFocus do campo e não da instancia dele. Compartilhar este post Link para o post Compartilhar em outros sites
vAlfonso 0 Denunciar post Postado Março 6, 2015 Quem criou o componente conseguiu resolver. kkkkk Quando executa a ação no componente na última linha foi posto o seguinte código: Exemplo LostFocus: Me.OnLostFocus(e) No caso do LostFocus pode ser feito assim também: Me.InvokeLostFocus(Me, e) Ele chama a função do lostfocus lá do formulário neste exemplo, no caso, de onde chamou esta ação. Obrigado pela atenção de todos. Compartilhar este post Link para o post Compartilhar em outros sites