パスワード管理ツールを自作しよう!(第8回・DataGirdViewイベント編)

プログラミング入門
この記事は約4分で読めます。

さて、今回は一覧部分で使っているDataGridViewのイベントについて解説します。

DataGridViewはDataTableと一緒に使われることが多く、その機能も豊富です。

ここでは、今回のパスワード管理ツールで使っているごく一部のイベントだけに絞っていますが、一覧で行追加や行削除を行う際に必要な知識となります。

キー入力イベント

ここでやりたい事は、編集モードか否かを判断し、編集モードであれば、削除キー(DELキー)が押された時に、カレント行を削除するという内容です。

DataGridVIewにはキー入力で次の3つのイベントが発生します。

KeyDownとKeyPressの違いは、KeyDownが全てのキーに対して発生するのに対し、KeyPressは文字キーが押されたときだけ発生します。

つまり、’A’ とか ’1’ を押したとき、両方のイベントが発生しますが、シフトキーやALTキーなどの修飾キーが押さた場合は、KeyPress は発生しないという事です。

今回は 削除キーを判断したいので、KeyDownのイベントハンドラを使いました。

では、さっそくソースコードを見ていきましょう。

編集モードの判定

編集モードであるかどうかは、DataGridViewのReadOnlyプロパティで判断します。

編集モードか否かを判定する方法としていくつかの方法が考えられます。

  1. DataGridView の ReadOnlyプロパティが false なら編集モードと判断
  2. DataGridVIewの AllowUserToAddRows プロパティが true なら編集モードと判断
  3. 別途、編集ボタンクリック時に true を代入するbool型の変数を用意し、これを使って編集モードを判断
  4. 編集ボタンのText プロパティが “編集中” であれば編集モードであると判断

これらはどの方法を使っても編集モードが否かを判断できますが、一番お薦めできないのが、4です。

一見分かり易そうですが、Textプロパティは単なる表記の文言を入れているだけで、将来変更される可能性が一番高いです。

1と2はDataGridViewのプロパティを使うという意味では同じですが、より直感的なのがReadOnlyかと思います。

3については、実際によく使われる方法ではあるのですが、わざわざ別途変数を用意しなくとも、ReadOnlyを使えばことが足りるので、今回は不採用にしました。

ReadOnlyで編集モードを判定した結果、編集モードだった場合は何もせずReturnしています。

最下段か否かの確認

削除する上で1点注意があります。

DataGridViewにおいて、ユーザーの行追加を許可した場合、常に一番下の段(最下段)に空白行が作られます。

この空白行は中身が確定していないものなので、行削除を行うとエラーが発生します。

そのエラーを発生させないため、最下段なら何もしないという処理を入れています。

DELキーの確認

KeyDown イベントで押されたキーを判定するには、イベントハンドラに渡される KeyEventArgs のKeyCodeプロパティを使います。

ここで、DELキー以外が押された時に、DataGridViewのRows.Removeメソッド (正確には DataGridViewのRowプロパティに入っているDataRowクラスのRemoveメソッド) を呼び出して、カレント行を削除しています。

まとめ

如何でしたでしょうか。

今回は編集モードにおいて、一覧部分の行削除についてのプログラムコードを解説しました。

以上で一通りの説明が終わりました。

初めてプログラムを作る方にとっては、少々難しかったかもしれません。

しかし、すべて理解しようとするのではなく、何となく理解できればそれでOKです。

色々なプログラムを作っていくうちに、だんだん理解が深くなっていきます。

初めてゲームをするとき、なかなかスコアが上がらないと思いますが、何度もやっていくうちに、意識しない間に上達してきて、スコアが上がっていきますよね。

あれとまったく同じです。

今は、感覚でとらえて頂く方が良いかと思います。

そして、出来るだけ数をこなして、経験値を上げていけば、かならず上達します。

タイトルとURLをコピーしました