如何根据其他单元格值使单元格可编辑
how to make cell editable based on other cell value
我有一个 gridView,我必须根据它旁边的单元格的值使单元格可编辑。就像如果第二列的单元格具有 "AF" 值,那么第一列的单元格将变得可编辑。
我使用 CellClick 事件得到了解决方案。但问题是,如果尝试使用键盘向下箭头或 Enter 按钮转到第一列的下一个单元格,我将无法使其可编辑。
这是 cellClick 事件的代码,它工作正常。
private void dgvForecastData_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (GridRowIndex >= 0)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = true;
string sActForecastIndicator = dgvForecastData.Rows[GridRowIndex].Cells["Actual/Forecast Indicator"].Value.ToString().Trim();
if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells["Non recurring"].ReadOnly)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = false;
}
}
}
请告诉我如何使用键盘(向下箭头并输入)实现上述功能。
我正在使用下面的代码,但它不起作用
private void dgvForecastData_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Down)
{
if (GridRowIndex >= 0)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = true;
string sActForecastIndicator = dgvForecastData.Rows[GridRowIndex].Cells["Actual/Forecast Indicator"].Value.ToString().Trim();
if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells["Non recurring"].ReadOnly)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = false;
}
}
}
}
也许使用:e.KeyCode == Keys.Down
会解决它。
我使用了当前行索引,而不是 gridrowindex,它现在正在工作。
我有一个 gridView,我必须根据它旁边的单元格的值使单元格可编辑。就像如果第二列的单元格具有 "AF" 值,那么第一列的单元格将变得可编辑。 我使用 CellClick 事件得到了解决方案。但问题是,如果尝试使用键盘向下箭头或 Enter 按钮转到第一列的下一个单元格,我将无法使其可编辑。
这是 cellClick 事件的代码,它工作正常。
private void dgvForecastData_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (GridRowIndex >= 0)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = true;
string sActForecastIndicator = dgvForecastData.Rows[GridRowIndex].Cells["Actual/Forecast Indicator"].Value.ToString().Trim();
if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells["Non recurring"].ReadOnly)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = false;
}
}
}
请告诉我如何使用键盘(向下箭头并输入)实现上述功能。
我正在使用下面的代码,但它不起作用
private void dgvForecastData_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Down)
{
if (GridRowIndex >= 0)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = true;
string sActForecastIndicator = dgvForecastData.Rows[GridRowIndex].Cells["Actual/Forecast Indicator"].Value.ToString().Trim();
if (sActForecastIndicator == "F" || sActForecastIndicator == "AF" && !dgvForecastData.Rows[GridRowIndex].Cells["Non recurring"].ReadOnly)
{
dgvForecastData.Rows[GridRowIndex].Cells["Forecast or Current Year Actual"].ReadOnly = false;
}
}
}
}
也许使用:e.KeyCode == Keys.Down
会解决它。
我使用了当前行索引,而不是 gridrowindex,它现在正在工作。