LoginSignup
0
0

More than 3 years have passed since last update.

C# .NET のDataGridView入力イベントでハマった

Posted at

おしごとでDataGridViewで一覧表示・編集するアプリを作っていて、タイトルの通りハマった話。

セルに入力があった場合に別の列の値を参照してDBに書込みに行くような処理を書いていた。
DataGridViewは:

  • 列により入力可否を設定 (デザイナー画面で「列の編集」を開き、動作>ReadOnlyで設定)
  • DataGridViewにKeyDownイベントを設定
  • KeyDownイベントでは入力セルのある行で特定の列の値を取得してアレコレ

こんな感じでやっていたのだけど、どういうわけか入力時に処理が走らない。
そのうえ入力不可の列でキーを叩くとイベントが走っている。(これは想定内で、イベントハンドラで対応しているのでOK)

ReadOnly:falseの列ではKeyDownイベントが発生しない

ググってみると、どうやらセル入力時にはセルそのものではなくセルの中にTextBoxが配置され、そのTextBoxを編集しているらしい。

【参考】

DataGridViewでセルが編集中の時にキーイベントを捕捉する

https://dobon.net/vb/dotnet/datagridview/textboxevent.html

でも同じやり方で過去に作った同じ.NET 4.6.1のアプリだと動いているんだよなあ…何が違うんだろう。
ちょっとモヤモヤするけど、とりあえず解決したので備忘録がてら。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0