WINFORMS - MOUSE SCROLL
Gente boa tarde.
Me deparei com um problema e não estou achando solução.
Tenho forms com combobox. Tudo ok, porém se um combo tem o foco e eu rolo o scroll do mouse ele muda o item selecionado no combo, porém não dispara o evento TextChange do combo que tem ações necessárias.
Como eu posso evitar que o scroll do mouse altere o combo, ou se não for possÃvel, tem como ao mudar o texto do combo (pelo scroll do mouse) acionar o evento TextChange desse combo?
Me deparei com um problema e não estou achando solução.
Tenho forms com combobox. Tudo ok, porém se um combo tem o foco e eu rolo o scroll do mouse ele muda o item selecionado no combo, porém não dispara o evento TextChange do combo que tem ações necessárias.
Como eu posso evitar que o scroll do mouse altere o combo, ou se não for possÃvel, tem como ao mudar o texto do combo (pelo scroll do mouse) acionar o evento TextChange desse combo?
Ve se isso te ajuda, pelo menos trava o scroll e mantem o index.
Private Sub ComboBox2_MouseWheel(sender As Object, e As MouseEventArgs) Handles ComboBox2.MouseWheel
ComboBox2.SelectedIndex = -1
End Sub
Private Sub ComboBox2_MouseWheel(sender As Object, e As MouseEventArgs) Handles ComboBox2.MouseWheel
ComboBox2.SelectedIndex = -1
End Sub
Se é um combobox em que apenas se pode escolher um item e não digitar diretamente nele então você deveria usar o event SelectedIndexChanged
Ocelot nos combobox podem ser tanto selecionados os como digitados, mas só aceita os itens na lista.
Nilson nesse caso que citou, você obriga o index a ser sempre -1 (igual sem seleção de item) e não é isso. O item foi selecionado ou digitado, o que não quero é que o scroll interfira nisso, ou seja, não altere a seleção do combo já feita pelo usuário.
O ideal seria desativar o scroll só nos combos e não num textbox por exemplo. Porém não achei nenhum evento no combo que trate disso e no C# 2008 não existe MouseWheel para combobox.
Nota: Vários combos, ao ser alterado o conteúdo do combo, aciona o carregamento de dados em outros controles. O scroll só muda no combo e não dispara o evento TextChange do combo, responsável pelas demais atualizações.
Nilson nesse caso que citou, você obriga o index a ser sempre -1 (igual sem seleção de item) e não é isso. O item foi selecionado ou digitado, o que não quero é que o scroll interfira nisso, ou seja, não altere a seleção do combo já feita pelo usuário.
O ideal seria desativar o scroll só nos combos e não num textbox por exemplo. Porém não achei nenhum evento no combo que trate disso e no C# 2008 não existe MouseWheel para combobox.
Nota: Vários combos, ao ser alterado o conteúdo do combo, aciona o carregamento de dados em outros controles. O scroll só muda no combo e não dispara o evento TextChange do combo, responsável pelas demais atualizações.
Citação:Nilson nesse caso que citou, você obriga o index a ser sempre -1
Em meus testes ele não fez isso, e sim manteve a combo com o seu valor selecionado.
Embora foi pedido -1, curioso, mas fez o que vc precisa.
Mas não existe MouseWheel para combobox no C# 2008 (Windows Forms).
LUIS HERRERA,
Desculpe me intrometer.
Tudo Indica que você terá problemas se não atualizar o visual Studio, me lembro que já teve com a versão do Crystal, sua empresa não pensa em atualizar ?
Desculpe me intrometer.
Tudo Indica que você terá problemas se não atualizar o visual Studio, me lembro que já teve com a versão do Crystal, sua empresa não pensa em atualizar ?
Luiz.
Você pode utilizar o evento SelectedValueChanged ou LostFocus.
Você pode utilizar o evento SelectedValueChanged ou LostFocus.
Nilson se todo problema que se tem de programação fosse resolvido com compra de nova versão. O desconhecimento (meu) sobre um assunto, não quer dizer que seja necessário uma nova versão da IDE para resolver, pois tudo que se faz com uma versão anterior, de consegui até mais fácil, ou deveria, com as versões posteriores.
Só como comentário, esse evento MouseWell só está disponÃvel em código, não pode ser acessado na aba de eventos do design time, que coisa!
Vou ver a dica do Guimoraes também e ver qual fica melhor ou resolve.
Nota: O problema que tive com Crystal Report felizmente foi solucionado, depois de 1 semana pesquisando, consegui solucionar adaptando com algumas dicas em sites diferentes. Tinha um [Ô]segredinho[Ô] no versão 2008 que não era necessário nas versões anteriores, pois se mudou estrutura e tipos de campos.
O grande problema que và até o momento com o Crystal Report é que para cada versão dele, as coisas são feitas de uma forma diferente, então isso complica muito, sendo uma ferramenta complexa e [Ô]Chata[Ô] para se dar manutenção. Trocar de versão implica em muitas vezes refazer várias coisas nela.
Muito obrigado por enquanto a todos.
Só como comentário, esse evento MouseWell só está disponÃvel em código, não pode ser acessado na aba de eventos do design time, que coisa!
Vou ver a dica do Guimoraes também e ver qual fica melhor ou resolve.
Nota: O problema que tive com Crystal Report felizmente foi solucionado, depois de 1 semana pesquisando, consegui solucionar adaptando com algumas dicas em sites diferentes. Tinha um [Ô]segredinho[Ô] no versão 2008 que não era necessário nas versões anteriores, pois se mudou estrutura e tipos de campos.
O grande problema que và até o momento com o Crystal Report é que para cada versão dele, as coisas são feitas de uma forma diferente, então isso complica muito, sendo uma ferramenta complexa e [Ô]Chata[Ô] para se dar manutenção. Trocar de versão implica em muitas vezes refazer várias coisas nela.
Muito obrigado por enquanto a todos.
Amigos bom dia.
Depois de procurar muito e quase desistir, hoje na 7 página de resultados do Google, consegui achar a solução explicada e funcionando. Abaixo o código que implementei para resolver o problema.
Crie o método publico
No load do form que tem os combos faça isso para cada combo
Nota: Isso é necessário porque os combos no VS 2008 tem o type MouseWheel na linha de código, mas não na janela de eventos do DesingTime para associar.
Mais um PROBLEMA VS 2008 [[ Resolvido ]]
Depois de procurar muito e quase desistir, hoje na 7 página de resultados do Google, consegui achar a solução explicada e funcionando. Abaixo o código que implementei para resolver o problema.
Crie o método publico
public static void meuCombo_MouseWheel(object sender, MouseEventArgs e)
{
((HandledMouseEventArgs)e).Handled = true;
}
No load do form que tem os combos faça isso para cada combo
this.Combo_1.MouseWheel += new MouseEventHandler(meuCombo_MouseWheel);
this.Combo_2.MouseWheel += new MouseEventHandler(meuCombo_MouseWheel);
//etc...
Nota: Isso é necessário porque os combos no VS 2008 tem o type MouseWheel na linha de código, mas não na janela de eventos do DesingTime para associar.
Mais um PROBLEMA VS 2008 [[ Resolvido ]]
Tópico encerrado , respostas não são mais permitidas