C#でプログラムを始めてみる連載の10回目です。前回の記事はコチラです。 hirocom777.hatenadiary.org
ショートカットを作る
前回はコモンダイアログを使ってファイルの選択をできるようにしました。
これで、かなりツールっぽくってきたんじゃありませんか?でも、未だ改善の余地がありそうです。今回は、ショートカットの機能を取り付けたいと思います。ファイル読込み、書込みがでるようになりましたがメニューからの操作に限られています。これらの機能をショートカットキーで呼び出すことができれば便利だしスマートですよね。
ショートカットキーの割り当て
それでは、メニューの各項目にショートカットキーを割り付けていきます。割り付けは以下の様にしましょう。
メニュー | キー |
---|---|
Open | Ctrl+O |
Save | Ctrl+S |
WindowsフォームデザイナーでF4キーを押してプロパティウィンドウを表示させます。一番上のドロップダウンリストでopenToolStripMenuItemを選択(①)して、その下の項目で ShortcutKeys を選択(②)してください。右側には None と表示されているので、その右端のボタンを選択(③)してください。
すると、ショートカットキーが選択できるようになります。修飾子のところはCtrlにチェックを入れてください。キーの所はドロップダウンで O を選択(④)します。
これでメニューの Open にショートカットキーを設定することができました。同様にメニューの Save にもショートカットキーを設定します。
操作してみる
それではF5キーを押して実行してみましょう。フォームが表示されたら Ctrl+O を押してみます。ファイルを開くコモンダイアログが開きました。同様に Ctrl+S を押すと、保存のコモンダイアログが表示されました。ショートカットキーの割り付け成功です!!
動作の見直し
ショートカットキーも実装できて使い勝手は良くなったと思うのですが、まだ操作の細かいところが行けてない感じがします。何が足りなてのでしょうか?
- ファイル読込み
まずファイルの読込みです。何も編集していない状態でファイルを読込もうとした場合は、そのままコモンダイアログを開けばいいでしょう。しかし何か編集途中であった場合は、編集内容を保存するかどうかを聞かなければなりません。それにはファイルを編集中であるかを判断する印(フラグ)が必要です。保存を希望する場合は、ファイルの書込み処理に進まなければなりません。
- ファイル書込み
次にファイルの書込みです。現状、ファイルを書き込む際にはファイル名を指定しています。しかしファイル名があらかじめ決まっている場合、そのまま上書きしたほうがいいでしょう。したがって、編集中のファイル名を記憶しておく必要があります。また、名前が決まっている場合でも名前を変えて存したい場合もあります。メニューの Save は上書き保存にして、別途名前を付けて保存(Save As)を追加する必要があります。上書き保存を選択した場合でも編集中のファイル名が決まっていない場合には、保存のコモンダイアログを表示してファイル名を指定できるようにします。
- 終了時
終了時にも、何か編集途中であった場合は保存するかどうかを聞かなければなりません。ファイル読込みの時と一緒です。保存する場合は、保存の処理をしてから終了します。
以上をまとめると
- ファイルを編集中であるかを判断する印(フラグ)が必要
- 編集中のファイル名を記憶しておく必要がある
- 保存処理は、上書き保存と名前をつけて保存の2つが必要
の追加が必要で、それに合わせて処理のコードを書いていけばいいと思います。
変数を使う
ファイルを編集中であるかを判断するフラグと編集中ファイル名の記憶ですが、変数を使います。変数というのはプログラム内でデータを保存する箱のようなものです。ファイル編集中フラグの様に、編集中(true)/未編集(false)など2通りの値を使う場合は論理値型の変数を使用します。ファイル名の様に文字列を使用する場合は文字列型の変数を使用します。
変数を使用するには、変数を使用する場所で変数の宣言をしなければなりません。宣言は以下の形で行います。
変数の型 変数名 = 初期値;
変数の型は論理値型のの場合Boolean、文字列型の場合Stringとなります。また、= 初期値の部分は省略する事もできます。
また、宣言する場所によって変数が有効になる範囲が異なります。変数は、宣言されたブロック({}で囲まれた内側)内で有効になります。今回はclass frmMain内で使用するので以下の場所に記述しました。
namespace TextEditor { public partial class frmMain : Form { Boolean fileChange = false;//ファイルが変更されたかどうかのフラグ String fileName = "";//編集中のファイル名
これで、変数を使用する準備ができました。
次回は変数を使ったプログラミング
今回はショートカット機能を装備してみました。意外に簡単にできましたよね。そして、さらに複雑な機能を実装するために変数を宣言しました。次回はこの変数を使ってプログラミングしていこうと思います。お楽しみに!!