PROBLEMAS DE TABULAR CAMPOS USANDO ENTER
Estou com um problema para tabular entre campos com o ENTER. No VB6 era preciso fazer coisas nos eventos de cada controle, no VS 2008 também?
Vi um código que se aplica ao Form:
(1) Alterar a propriedade KeyPreview do Formulário para †trueâ€
(2) Preencha o evento KeyDown do Formulário com o seguinte código:
private void ClientesForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// isso (opção 1)
SendKeys.Send([Ô]{TAB}[Ô]);
e.SuppressKeyPress = true; //não emitir som
// ou isso (opção 2)
this.SelectNextControl(this.ActiveControl, !e.Shift, true, true, true ); // funcionamento semelhante a Shift + ENTER do Windows
}
}
Problema:
1- Essa solução tabula por todos os campos (controles) e não somente entre os de preenchimento (Textbox, Combos, Checkbox, etc...)
2- No caso dos Textbox Multiline, o ENTER para de funcionar. Será que será preciso programar os eventos de cada campo como no VB6 para isso funcionar tipo:
campo um keypress = ENTER -> campoEX.SetFocus .......etc....?
Será que tem como inibir certos campos para não pular com o ENTER?
Vi um código que se aplica ao Form:
(1) Alterar a propriedade KeyPreview do Formulário para †trueâ€
(2) Preencha o evento KeyDown do Formulário com o seguinte código:
private void ClientesForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// isso (opção 1)
SendKeys.Send([Ô]{TAB}[Ô]);
e.SuppressKeyPress = true; //não emitir som
// ou isso (opção 2)
this.SelectNextControl(this.ActiveControl, !e.Shift, true, true, true ); // funcionamento semelhante a Shift + ENTER do Windows
}
}
Problema:
1- Essa solução tabula por todos os campos (controles) e não somente entre os de preenchimento (Textbox, Combos, Checkbox, etc...)
2- No caso dos Textbox Multiline, o ENTER para de funcionar. Será que será preciso programar os eventos de cada campo como no VB6 para isso funcionar tipo:
campo um keypress = ENTER -> campoEX.SetFocus .......etc....?
Será que tem como inibir certos campos para não pular com o ENTER?
faça desta maneira:
private void ClientesForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// isso (opção 1)
SendKeys.Send([Ô]{TAB}[Ô]);
e.Handled = true;
}
}
private void ClientesForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// isso (opção 1)
SendKeys.Send([Ô]{TAB}[Ô]);
e.Handled = true;
}
}
Jaba o problema que quando o textbox é do tipo multiline ele não permite digitar várias linhas, pulando para outro campo. é esse o problema. Acho que terei de usar o evento Keypress deste campo multiline, agora só não sei como incluir o código do evento para aceitar o ENTER como nova linha nele e não aceitar o TAB do formulário.
Barros legal, não lembrava disso. Como no VB6 era obrigado a codificar cada campo, então o ENTER funcionava.
Valeu.
Valeu.
Tópico encerrado , respostas não são mais permitidas