return base.ProcessCmdKey(ref msg, keyData);
这里没有返回值啊,上次都和你说了。
而且protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) 
{
MessageBox.Show("enter"); }
这一段是什么意思啊?看不通,又没有返回值。

解决方案 »

  1.   

    TO polarlm(polarlm):
    對不起﹐讓您又忙活了﹐再次感謝你的指點﹐
    但我按您說的去做﹐還是一樣﹐Enter還是沒起作用﹐
    請再指正一下﹐謝謝了﹗﹗﹗
    protected override void OnKeyDown(KeyEventArgs ke)
    {
      MessageBox.Show("test");
    }
    public class mydatagrid:DataGrid
    {
       protected override void OnKeyDown(KeyEventArgs ke)
      {
         if  (ke.KeyCode  ==  Keys.Enter)  
        {  
    SendKeys.Send("{TAB}");  
        }  
        base.OnKeyDown(ke);
    }
    應該如何做才可以?
      

  2.   

    protected override void OnKeyDown(KeyEventArgs ke)
    {
      MessageBox.Show("test");
    }是做什么的阿?
      

  3.   

    public class MyDataGrid : DataGrid
    {
    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg ,System.Windows.Forms.Keys keyData)
    {
    if(msg.WParam.ToInt32() == (int)Keys.Enter)
    {
    SendKeys.Send("{Tab}");
    return(true);
    }
    return base.ProcessCmdKey(ref msg,keyData);
    }
    }
    肯定是可以的。MyDataGrid myDataGuid = new MyDataGrid ();
    myDataGuid.datasource = .....;
    this.controls.add(myDataGuid );
    在窗体上用MyDataGrid类,而不是用系统提供的datagrid类
      

  4.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;namespace WindowsApplication1
    {
    public class MyDataGrid : DataGrid
    {
    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg ,System.Windows.Forms.Keys keyData)
    {
    if(msg.WParam.ToInt32() == (int)Keys.Enter)
    {
    SendKeys.Send("{Tab}");
    return(true);
    }
    return base.ProcessCmdKey(ref msg,keyData);
    }
    } /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    MyDataGrid myDataGrid = new MyDataGrid();
    myDataGrid.Dock = DockStyle.Fill;
    this.Controls.Add(myDataGrid);
    DataColumn dc1 = new DataColumn("column1",typeof(System.String));
    DataColumn dc2 = new DataColumn("column2",typeof(System.String));
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[]{dc1,dc2});
    DataRow dr = dt.NewRow();
    dr["column1"] = "column1";
    dr["column2"] = "column2";
    dt.Rows.Add(dr);
    myDataGrid.DataSource = dt.DefaultView; //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.components = new System.ComponentModel.Container();
    this.Size = new System.Drawing.Size(300,300);
    this.Text = "Form1";
    }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    }
    }
    }
      

  5.   

    参考http://expert.csdn.net/Expert/topic/2353/2353484.xml?temp=.3634455
      

  6.   

    protected override bool ProcessCmdKey(ref Message msg,Keys keyData)
    {
                               int WM_KEYDOWN  = 256;  //消息响应的问题可以参考其他win32编程的文章 int WM_SYSKEYDOWN  = 260; KeyPressEventArgs e; if(msg.Msg == WM_KEYDOWN || msg.Msg == WM_SYSKEYDOWN)
    { switch(keyData)
    { case Keys.Left:
    MessageBox.Show("截到左箭头键");
    return true;
    //break; case Keys.Right:
    MessageBox.Show("截到右箭头键");
    return true;
    //break; case Keys.Down:
    MessageBox.Show("截到下箭头键");
    return true;
    //break; case Keys.Up:
    MessageBox.Show("截到上箭头键");
    return true;
    //break; case Keys.Enter:
    MessageBox.Show("截到回车键");
    return true;
    //break; default:
    return false; }
    }
    else
    {
    return false;
    } }
      

  7.   

    謝謝 cqnimin()﹕
    按您所說終于解決了﹐
    再次說聲謝謝了