• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[Visual C#] 優先される処理について)

[Visual C#] セルの編集状態でEnterキーを押下した場合の処理について

このQ&Aのポイント
  • Visual C# 2010を使用して開発を行っています。DataGridViewクラスを継承した独自クラスを定義し、セルの編集状態でEnterキーを押下した場合、次の行のセルにフォーカスを移動する処理を行っています。
  • 別のcsファイルでDataGridViewのインスタンスを生成し、CellValidatingイベント内でセルに入力された値のエラーチェック処理を行っています。しかし、エラーが発生した場合でも強制的にフォーカス移動処理が実行され、同じエラーが出力されます。
  • なぜ他の処理を無視してフォーカス移動処理が強制実行されるのかが理解できずに困っています。ご存じの方がいらっしゃいましたら、教えていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

当方の実験したケースは class DBGviewBase : DataGridView ... (1) class DBGViewMain : DBGVIewBase ... (2) として DBGViewBaseの OnCellEndEditで 質問のコードを少し改変したもの this.CurrenCell = this[ColIndex, RowIndex]; DBGViewMainおよびフォームに配置したコントロールの OnValidatingイベントで // DBGViewMainクラスのみ base.OnValidate(e); if ( e.ColumnIndex == 0 ) {   int nID = -1;   if ( !Int32.TryParse( e.FormattedValue.ToString(), out nID ) )   {     e.Cancel = true;   } } といった内容ですよ

その他の回答 (2)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

用語の使い方が滅茶苦茶なんでよく分からないけど、 >上記(1)を親クラスとしてDataGridViewのインスタンスを生成しています。 >(1)にはフォームなどのデザインはなく、処理のみです。 >(2)は、実際にフォームやDataGridViewを配置しているファイルになります。 このあたりを言葉通りに捉えれば、インスタンス2個作って 継承してるから勝手に連携されると思ってる節がありますが。 画面上に DataGridView1 と DataGridView2 を貼り付けて、 勝手に連携される事がないのと同じく、インスタンスが 別なら何ら関係性はありません。それぞれで独立して 処理されます。 そこはOK?

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

(1)のコードはどこのイベントに書かれているのでしょう 当方で実験すると CellValidatingが先に実行されますが 派生クラスのOnValidatingメソッド > Form1に書いたハンドラ > e.CancelがFalseならば 元クラスのOnCellEditEndメソッド と順で実行されますよ …

masy0312
質問者

補足

ご回答ありがとうございます。 補足させていただきます。 (1)のコードは、 (2)とは別クラスに定義している内容になります。 (別途、新規作成したcsファイルで定義したクラス内に(1)の内容を記述しています) (1)にはフォームなどのデザインはなく、処理のみです。 (2)は、実際にフォームやDataGridViewを配置しているファイルになります。 (2)のcsファイルの関連ファイルxxx.designers.cs内に以下の記述をしています。 (xxx.designers.cs) namespace WindowsFormsApplication1 { partial class passSaleModForm { private PFDataGridView meisaiDataGridView; private xxxxxx xxxxxx; private yyyyyy yyyyyy; : } }

関連するQ&A