ENTER NO LUGAR DO TB

HUBER.FABIO 02/02/2011 15:15:11
#364136
OLÁ AMIGOS !

COMO PODEM PERCEBER ESTOU INICIANDO EM C#, GOSTARIA DA FAMOSA ROTINA PARA ENTER NO LUGAR DO TAB..GOSTARIA DE SABER TAMBéM COMO POSSO OTIMIZAR ISSO, OU SEJA, ONDE O MELHOR LUGAR PARA DEFINI-LÁ, COMO CHAMAR NO FORMULÁRIO AUTOMÁTICAMENTE FAZENDO QUE TODOS OS CAMPOS JÁ RECONHEÇAM, ETC
RODRIGOFERRO 02/02/2011 15:33:09
#364137

public static void TrocaTABporEnter(Control _ctrl)
{
if (_ctrl.HasChildren)
{
foreach (Control _child in _ctrl.Controls)
{
if (_ctrl.HasChildren)
TrocaTABporEnter(_child);
}
}
else
{
///Não funciona para Numeric Up Down
if (_ctrl is TextBox ||
_ctrl is MaskedTextBox ||
_ctrl is ListBox ||
_ctrl is CheckBox ||
_ctrl is TabPage ||
_ctrl is DateTimePicker ||
_ctrl is ComboBox)
{
/// inibe a ação do Enter para evitar o comportamento de
/// Accept em alguns casos
_ctrl.KeyDown += delegate(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
e.SuppressKeyPress = true;
};
/// adiciona a tratativa à tecla Enter e envia o TAB para
/// promover a navegação
_ctrl.KeyUp += delegate(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// SendKeys.Send([Ô]{TAB}[Ô]);
_ctrl.FindForm().SelectNextControl(_ctrl, true, true, true, false);
}
};
}
}
}


Este método pode ser chamado em qualquer momento do seu código e faz com que todos os controles filhos do controle passado por parâmetro adiquiram o comportamento, sem a necessidade de mapear o evento para todos os controles.

TrocaTABporEnter(this);


Como comentado, o código não funciona com alguns controles, em particular o NumericUpDown. Para que isso seja possível, é preciso sobrescrever alguns métodos da classe, mas isso já outra história.

ou pode tentar assim:
(1) Alterar a propriedade KeyPreview do Formulário para [Ô] true[Ô]
(2) Preencha o evento KeyDown do Formulário com o seguinte código:
if (e.KeyCode == Keys.Enter)
{
this.SelectNextControl(this.ActiveControl, !e.Shift, true, true, true );
}



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