想问一下各位大大…
要怎么在datagrid控件下载取tab键和向右的方向键呀??
private   void   Form1_KeyDown(object   sender,   System.Windows.Forms.KeyEventArgs   e)   
{   
MessageBox.Show(e. KeyData.ToString());
if( e. KeyData == Keys.Right)
{   
MessageBox.Show("此为向右方向键");
}
if(e.KeyData == Keys.tab)   
{   
MessageBox.Show("此为Tab键");
}
}
我这样写它好像都没反应耶??(我用的是c# 2003的唷!

解决方案 »

  1.   

    你用那个控件的事件,不要用form的事件截取
      

  2.   

    我是form_load下去触发datagrid事件
    this.dataGrid1.KeyDown += new KeyEventHandler(Form1_KeyDown);
    不好意思,因为用call的,所以没有去换名称啦*.*
      

  3.   


            private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
            {
                MessageBox.Show(e.KeyData.ToString());
                if (e.KeyData == Keys.Right)
                {
                    MessageBox.Show("此为向右方向键");
                }
                if (e.KeyData == Keys.Tab)
                {
                    MessageBox.Show("此为Tab键");
                } 
            }  
    所选事件不对,应该用PreviewKeyDown
    测试可以.
      

  4.   

    PreviewKeyDown我之前有看过,可是
    这个事件是 .NET Framework 2.0 版的新功能。
    我用的是C# 2003 .NET Framework 1.1所以没有这个功能!!
      

  5.   

    自己写个类继承DataGrid,然后重写ProcessCmdKey    public class MyDataGrid : DataGrid
        {
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (keyData == Keys.Right)
                {
                    MessageBox.Show("此为向右方向键");
                }
                if (keyData == Keys.Tab)
                {
                    MessageBox.Show("此为Tab键");
                } 
                return base.ProcessCmdKey(ref msg, keyData);
            }
        }
      

  6.   

    sorry自己学c#,观念不是很清楚,看不太懂耶!你所说的写个新的class就是你给的MyDataGrid?
    我还是弄不出来耶!
    类似:
    private void Form1_Load(object sender, System.EventArgs e)
    {
    MyDataGrid mytest = new MyDataGrid();
    this.dataGrid1.KeyDown += new KeyEventHandler(Form1_KeyDown);
    }
    private   void   Form1_KeyDown(object   sender,   System.Windows.Forms.KeyEventArgs   e)   
    {   
    Message msg = new Message();
    if (ProcessCmdKey(ref msg,e.KeyData))
    MessageBox.Show(ProcessCmdKey(ref msg,e.KeyData).ToString());
    }