我想编辑datagridview1数据时,按上下移动另一个datagridview2的行,按了“下键”后,datagridview2的确移动了,但是datagridview1也同时向下,请问怎样做datagridview1才不往下移动?private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
try
{
if (b)
{
DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl; b = false; editingControl.TextChanged += new EventHandler(editingControl_TextChanged);
editingControl.PreviewKeyDown += new PreviewKeyDownEventHandler(editingControl_PreviewKeyDown);
}
}
catch { }
}void editingControl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
try
{
System.Diagnostics.Debug.WriteLine(e.KeyData);
if (e.KeyCode == Keys.Down && dataGridView1.CurrentCell.ColumnIndex == 0)
{
if (zddgv.CurrentRow.Index + 1 < zddgv.Rows.Count)
zddgv.CurrentCell = zddgv[0, zddgv.CurrentRow.Index + 1];
else zddgv.CurrentCell = zddgv[0, 0];
} }
catch { }
}
{
try
{
if (b)
{
DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl; b = false; editingControl.TextChanged += new EventHandler(editingControl_TextChanged);
editingControl.PreviewKeyDown += new PreviewKeyDownEventHandler(editingControl_PreviewKeyDown);
}
}
catch { }
}void editingControl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
try
{
System.Diagnostics.Debug.WriteLine(e.KeyData);
if (e.KeyCode == Keys.Down && dataGridView1.CurrentCell.ColumnIndex == 0)
{
if (zddgv.CurrentRow.Index + 1 < zddgv.Rows.Count)
zddgv.CurrentCell = zddgv[0, zddgv.CurrentRow.Index + 1];
else zddgv.CurrentCell = zddgv[0, 0];
} }
catch { }
}
你意思是,focus在datagridview1按上下移动datagridview2的rowselect?然后focus在datagridview1按Enter把datagridview2的rowselect复制到datagridview1?
还是datagridview1确实进入了编辑状态而进行上下移动和enter操作?
就是在datagridview的单元格编辑时,按上下键时,datagridview1的光标或焦点不移动,datagridview2的行改变~然后按回车后,datagridview2的数据传到datagridview1当前编辑的单元格所在的行~
{
// KeyUp事件
if (e.KeyCode == Keys.Down || e.Modifiers == Keys.Up )
{
让 GridView2移动的代码
}
if (e.KeyCode == Keys.Enter)
{
GridView2数据复制过来
}
private void dataGridView_KeyUp(object sender, KeyEventArgs e)
{
// KeyUp事件
if (e.KeyCode == Keys.Down)
{
让 GridView2移动的代码
}
这样我试过了,当然还缺了判断dataGridView是否在编辑状态的代码
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.PreviewKeyDown += new PreviewKeyDownEventHandler(editControl_PreviewKeyDown);
}编辑cell的内部按钮事件,在这里写你要的就可以了
private void editControl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
MessageBox.Show(e.KeyData.ToString()); }