Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9543

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

$
0
0

おしごとで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のアプリだと動いているんだよなあ…何が違うんだろう。
ちょっとモヤモヤするけど、とりあえず解決したので備忘録がてら。


Viewing all articles
Browse latest Browse all 9543

Trending Articles