2017-11-24 7 views
0

私はgridViewを持っており、セルの横にあるセルの値に基づいてセルを編集可能にする必要があります。第2列のセルが「AF」値を有する場合と同様に、第1列のセルは編集可能になる。 私は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; 
        } 


       } 
      } 
     } 

答えて

0

gridrowindexの代わりに私は現在の行のインデックスとその作業を使用しました。

0

が動作していない:e.KeyCode == Keys.Downはそれを解決します。

+0

いいえ、動作しません。 –

+0

実際にイベントが発生したことは確かですか? – Dimitar

+0

はいイベントは発射され、最後の条件のif-> if(sActForecastIndicator == "F" || sActForecastIndicator == "AF" &&!dgvForecastData.Rows [GridRowIndex] .Cells ["Non recurring"] ReadOnly。しかし、私は任意の数値を押して編集しようとすると、再び(e.KeyData == Keys.Down)とキーが押されているかどうかをチェックすることになるので、私は編集することはできません –

関連する問題