解决办法:重写窗体的 ProcessCmdKey 方法
示例如下:
using System.Data;
using System.Windows.Forms;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeUI();
}
DataGridView gv;
private void InitializeUI()
{
var dt = new DataTable();
dt.Columns.Add("Col1");
dt.Columns.Add("Col2");
gv = new DataGridView() { Dock = DockStyle.Fill, DataSource = dt };
this.Controls.Add(gv);
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// DataGridView 第一列的单元格不处理回车
if (keyData == Keys.Enter && gv.CurrentCell.ColumnIndex == 0)
{
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
}