Ir para conteúdo

Arquivado

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

vAlfonso

Problema com ações do Textbox de componente

Recommended Posts

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

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

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

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

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

×

Informação importante

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