Hur gör jag för att veta om användaren trycker på TAB? Sökte lite eftersom jag tyckte det var ett intressant problem. Om du inte vill ha det i Formen så kan du ju alltid ärva DataGrid och implementera IMessageFilter där.Kolla TAB-tangenten på en datagrid
När jag använder KeyDown-händelsen så triggar den inte för TAB.
<code>MessageBox.Show("Tangent: " + e.KeyData);</code>
/LarreSv: Kolla TAB-tangenten på en datagrid
Detta är en lösning hittad på:
http://www.syncfusion.com/FAQ/WinForms/FAQ_c46c.asp#q852q (url verkar inte funka just nu så jag har bara skrivit ut den...)
http://www.syncfusion.com/FAQ/WinForms/FAQ_c46c.asp#q852q
Byt bara ut Keys.Escape till Keys.Tab så skall det funka bra.
Sen kan du ju bara kall på din metod för vad du vill göra för tab tangent inne i ifsatsen.
Hoppas att det blev lite ljusare iallafall
Lite kod:
<code>
public class MyMainForm : System.Windows.Forms.Form, IMessageFilter
{
const int WM_KEYDOWN = 0x100;
const int WM_KEYUP = 0x101;
public bool PreFilterMessage(ref Message m)
{
Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode;
if(m.Msg == WM_KEYDOWN && keyCode == Keys.Tab)
{
MessageBox.Show("Tab e tryckt");
return true; //konsumerar tab-tryckningen... vill du att tabben skall gå igenom så är det bara att ta bort denna rad
}
return false;
}
....
....
....
private void MyMainForm_Load(object sender, System.EventArgs e)
{
Application.AddMessageFilter(this);
}
}
</code>Sv: Kolla TAB-tangenten på en datagrid