Serialcoder en Français Serialcoder in English
TEL : +33 (0)9 72 13 15 17

Windows Forms FAQ resources

5. Windows Forms Datagrid

5.90 In my datagrid, if I press tab to enter a column using a derived columnstyle, the column does not receive focus. Why?


This behavior can be seen when you embedded a control like a textbox or combobox in your derived GridColumnStyle. If you press the tabkey slowly, you may see the cell get focus on the downkey and the cell lose focus on the upkey. One way to avoid this problem is to subclass the embedded control, and override its WndProc method, ignoring the KeyUp.

[C#]
public class MyCombo : ComboBox
{
private const int WM_KEYUP = 0x101;

protected override void WndProc(ref System.Windows.Forms.Message m)
{
if(m.Msg == WM_KEYUP)
{
return; //ignore the keyup
}
base.WndProc(ref m);
}
}

[VB.NET]
Public Class MyTextBox
     Inherits TextBox
     Private WM_KEYUP As Integer = &H101

     Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
          If m.Msg = WM_KEYUP Then
               Return 'ignore the keyup
          End If
          MyBase.WndProc(m)
     End Sub 'WndProc
End Class 'MyTextBox