return base.ProcessCmdKey(ref msg, keyData);
这里没有返回值啊,上次都和你说了。
而且protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
MessageBox.Show("enter"); }
这一段是什么意思啊?看不通,又没有返回值。
这里没有返回值啊,上次都和你说了。
而且protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
MessageBox.Show("enter"); }
这一段是什么意思啊?看不通,又没有返回值。
對不起﹐讓您又忙活了﹐再次感謝你的指點﹐
但我按您說的去做﹐還是一樣﹐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);
}
應該如何做才可以?
{
MessageBox.Show("test");
}是做什么的阿?
{
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类
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());
}
}
}
{
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;
} }
按您所說終于解決了﹐
再次說聲謝謝了