I think you can do this by adding some memebers to track the editrow, editcolumn, whether you are editing and if the click to select a row is the first one after setting the edit switch. Then in a CurrentCellChanged event handler, depending on these switches, you can decide whether to allow the currentcell to move or not.
private bool isFirstClick = false;
private bool isEditing = false;
private int editRow;
private int editColumn;
//toggles editing on/off
private void button1_Click(object sender, System.EventArgs e)
{
if(isEditing)
isEditing = false;
else
{
isFirstClick = true;
isEditing = true;
}
}
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
if(isEditing)
{
if(isFirstClick)
{
isFirstClick = false;
editRow = this.dataGrid1.CurrentRowIndex;
}
else if(this.dataGrid1.CurrentRowIndex != editRow)
{
this.dataGrid1.CurrentCell = new DataGridCell(editRow, editColumn);
}
editColumn = this.dataGrid1.CurrentCell.ColumnNumber;
}
}