首先,这是我第一次发布问题,因此非常感谢任何批评,建议或指导。
在用户选择有效输入后,我试图更改当前选定的单元格。我创建了一个DataGridView,它一次使用两行作为用户输入。用户在“固定”单元格中完成编辑后,将调用CellEndEdit事件,我将为另一组输入添加并自定义另外两行。然后,我希望显示给用户的选定单元格是新的“修复”单元格(Dgv2.Row [i] .Cells [2])。
我首先尝试了简单的Dgv2.CurrentCell = Dgv2.Rows [cSelect] .Cells [2]; 在先前的项目中为我工作过...目前看来对我没有任何帮助。我已经尝试了BeginEdit = true和上面的代码,但还是没有。
我还尝试取消选择当前单元格,并尝试突出显示然后设置当前单元格,如下面的代码所示。在过去的两天里,我已经仔细阅读了MSDN和任何相关的Stack Overflow帖子,发现自己已经尝试过了。您可以在下面的代码段中看到我正在尝试的操作。
再次提出任何批评,指点或建议会很有帮助。
private void Dgv2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int rwIndex = Dgv2.CurrentRow.Index;
int Count = Dgv2.RowCount;
DataGridViewTextBoxCell fixCell = new DataGridViewTextBoxCell();
DataGridViewTextBoxCell latCell = new DataGridViewTextBoxCell();
DataGridViewTextBoxCell longCell = new DataGridViewTextBoxCell();
DataGridViewTextBoxCell ElevCell = new DataGridViewTextBoxCell();
fixCell.Value = "";
latCell.Value = "";
longCell.Value = "";
ElevCell.Value = "";
for (int i = 0; i < Count; i++)
{
if (Dgv2.Rows[i].Index == (Count - 2))
{
if (Dgv2.Rows[i].Cells[2].Value != null)
{
fixCell.Value = Dgv2.Rows[i].Cells[2].Value;
}
}
}
if (fixCell.Value.ToString() != "")
{
Autotext1.Text = fixCell.Value.ToString().ToUpper();
fixCell.Value = Autotext1.Text;
int index = Airports.IndexOf(Autotext1.Text);
if (Autotext1.Text != "" && Autotext1.TextLength == 3 && index <= 7184 && index > 0)
{
// Update all other properties of row
string latitude = Latitude[index];
string longitude = Longitude[index];
string elevation = Elevation[index];
latCell.Value = latitude;
longCell.Value = longitude;
ElevCell.Value = elevation;
for (int i = 0; i < Count; i++)
{
if (Dgv2.Rows[i].Index == (Count - 2))
{
Dgv2.Rows[i].Cells[2].Value = fixCell.Value;
Dgv2.Rows[i].Cells[3].Value = latCell.Value;
Dgv2.Rows[i].Cells[4].Value = ElevCell.Value;
}
if (Dgv2.Rows[i].Index == (Count - 1))
{
Dgv2.Rows[i].Cells[3].Value = longCell.Value;
}
}
//if current row is last row add two new rows and get style
if ((Count - 2) == rwIndex && latCell.Value.ToString() != "")
{
Dgv2.Rows.Add(2);
Dgv2GetSpecColumns();
int cSelect = (Dgv2.RowCount - 2);
Dgv2.BeginEdit(true);
// Deselect current row
Dgv2.Rows[rwIndex].Cells[2].Selected = false;
// Highlight last waypoint
Dgv2.Rows[cSelect].Cells[2].Selected = true;
// Select last waypoint
Dgv2.CurrentCell = Dgv2.Rows[cSelect].Cells[2];
}
}
}
}
所以我期望的是添加两个新行,并且示例中的这一行逐步执行(Dgv2.CurrentCell = Dgv2.Rows [cSelect] .Cells [2];),所选单元格应更改为我试图指定它的单元格,但是没有。