PROBLEMAS DE TABULAR CAMPOS USANDO ENTER

LUIS.HERRERA 16/03/2012 11:27:31
#397297
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?
JABA 16/03/2012 15:13:51
#397332
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;

}
}
LUIS.HERRERA 16/03/2012 16:49:16
#397337
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.
LUIS.HERRERA 19/03/2012 09:25:28
#397476
Barros legal, não lembrava disso. Como no VB6 era obrigado a codificar cada campo, então o ENTER funcionava.

Valeu.
Tópico encerrado , respostas não são mais permitidas