如何根据其他单元格值使单元格可编辑

时间:2017-11-24 11:20:57

标签: c# asp.net gridview keypress keydown

我有一个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;
                    }


                }
            }
        }

2 个答案:

答案 0 :(得分:0)

也许使用:e.KeyCode == Keys.Down将解决它。

答案 1 :(得分:0)

我没有使用gridrowindex,而是使用当前行索引及其现在正在工作。