FrontPage

. C#で作る、あなただけのメモ帳 ~最終回~

2013-01-08 12:00:00

なぜ最終回を書くまで、こんなに時間がかかったのかというと、私の担当するミッションがインターネット関連に変わるとともに、業務で MSDN ブログを始めることとなり、 そちらの方に注力することになったためです。

それから数年、てっきりこのブログは削除されているだろうと思っていたのですが、先日 Twitter で、このブログを読んでいたという方から「最終回を書いてほしい」というリクエストがあり、自分なりに心残りもあったので更新することになったわけです。

今回の記事は、前回の記事 (3 年以上前ですが) に書いたとおり、このブログで紹介したサンプルをカスタマイズしてしばらく私が実際に使っていたものの紹介になります。

もちろんアプリケーションの機能を説明するだけでなく、プロジェクトファイルをダウンロードして Visual Studio 2012 を使用して実際の動作とコードを確認することができます。

Visual Studio 2012 にも無償の Express エディションがあり、以下のリンクから入手することができます。

ダウンロード | Microsoft Visual Studio 2012 http://www.microsoft.com/visualstudio/jpn/downloads#d-2012-express

デスクトップ アプリケーションを開発するには Visual Studio 2012 Express for Windows Desktop を使用します。

この記事で紹介するサンプルプログラムのプロジェクトは以下から入手できますので、Visual Studio 2012 Express for Windows Desktop がインストールされた PC にダウンロードしてください。

ダウンロードした zip ファイル解凍し、ファイル myEditor.sln をダブルクリックしてソリューションを Visual Studio 2012 にロードします。

キーボードの [F5] キーを押下することでアプリケーションをデバッグ実行することができます。

ちなみに今回のソリューションに含まれるファイル類は、2009 年当時に Visual Studio 2008  で作成したものを Visual Studio 2012 でコンバートしたものです。

C#で作る、あなただけのメモ帳サンプル- カスタマイズ例-

(サンプルアプリケーションを起動したところ)

今回のサンプル アプリケーションには、これまでこのブログで紹介してきたサンプルに以下の機能を追加しています。

なお画面ショットのダイアログを表示するには、サンプルアプリケーションのメニューで、[ツール] - [オプション] を選択します。

扱うファイルの拡張子の追加と削除機能

アプリケーションで編集対象とするファイルの拡張子を自由に追加/削除することができるようになっています。

具体的には、ファイルを開くダイアログボックスの、ファイルの種類を示すドロップダウンリストの内容を任意で指定することが可能です。

これにより未知の拡張子が付けられたテキスト形式のファイルを編集するときでも、いちいちアプリケーションのソースを変更してフィルタの種類を増やす必要はありません。

ファイルの暗号化

保存の際にファイルを NTFS 暗号化するか否かを選択できるようになっています。

NTFS 暗号化は、NTFS の暗号化ファイルシステム (EFS: Encrypting File System) の機能を利用するもので、この機能を使用すると、保存時に使用したユーザーアカウント以外からファイルをオープンすることができなくなります。

ただし、この機能は、OS がユーザーアカウントを管理する機能を搭載していることが前提であるため、Windows XP の Home エディションなどでは使用することはできませんのでご注意ください。

NTFS 暗号化の詳細については以下の内容をご参照ください。

暗号化ファイル システムの最善の使用方法 http://support.microsoft.com/kb/223316/ja

実装は、File クラスの Encrypt メソッドを使用しています。

詳細な説明と、使い方を示すサンプルコードについて以下のドキュメントをご参照ください。

File.Encrypt メソッド http://msdn.microsoft.com/ja-jp/library/system.io.file.encrypt(v=VS.80).aspx

※画面ショットにある [Base 64 デコード...] についてはあとで説明します。

ファイルの自動保存

編集中のファイルを一定間隔で自動保存する機能を搭載しています。

編集中のファイルに上書きするか、作業ファイルに保存するか選択することができます。

作業ファイルに自動保存するようにした場合は、アプリケーションの exe のあるフォルダ下に自動的に作成される AutoSaved? という名前のフォルダに作業中の内容が保存されます。

AutoSaved? フォルダのファイルは、ファイルの保存、アプリケーションの正常終了時に自動的に削除されますが、アプリケーションの異常終了などでファイルが残っている場合は、アプリケーションの次回起動時に作業ファイルの内容をロードするかどうかを聞いてきます。

サンプル アプリケーションでは、時間のカウントにタイマーコントロールを使用し、時間間隔の指定は Interval プロパティで、保存処理は Tick イベントで行っています、

タイマーについての詳しい説明と、使い方を示すサンプルコードについては、以下のドキュメントをご参照ください。

Timer クラス http://msdn.microsoft.com/ja-jp/library/system.windows.forms.timer(v=VS.80).aspx

バイナリファイルの Base 64 エンコードとデコード

画像などの非テキストファイルを Base 64 エンコードし、テキストに変換する機能、そしてデコードして元のファイル形式に戻す機能を搭載してします。

この機能を使用するには、サンプル アプリケーションのテキスト エディター部分に目的のファイルをドラッグします。

テキスト エディター部分にテキスト ファイル以外のファイルをドラッグすると、Base 64 エンコードするかメッセージボックスが表示されるのでエンコードする場合は [OK] ボタンをクリックします。

[ファイル] - [名前を付けて保存] を選択すると、仮の拡張子 *.bs64 のついたファイル名が付きますが、自分でもとのファイル名と、どのようなファイルであるかを覚えているのであれば変更してしまっても構いません。

Base 64 エンコードされたデータを元の形式に戻すには、メニュー[ファイル] - [Base64 デコードして保存] を選択します。

この時のファイル名が、このアプリケーションが付けたものであれば、自動で元のファイル名が付けられますが、変更している場合は、明示的に正しい拡張子を含んだ名前を付ける必要があります。

この Base 64 のエンコード、デコードは System.Convert クラスの ToBase64String メソッドと FromBase64String メソッドを使用しています。

詳細な説明と使い方を示すサンプルコードについては、以下のドキュメントをご参照ください。

Convert クラス http://msdn.microsoft.com/ja-jp/library/system.convert(v=vs.80).aspx


さて、長い期間にわたってお送りしてきました C# を使用したメモ帳の作成なのですが、3 年の期間を空けて経ってようやく最終回を迎えることができました。

私は今、Internet Explorer やWindows ストア アプリ ( Windows 8 の新しい UI で動作するアプリです) の技術啓発をメインで行っていますので、今後 Windows フォーム アプリケーションについてなにか記事を書くことはおそらくないでしょう。

MSDN ブログのほうでは Windows ストア アプリの作成方法ついて記事を書いていますので、Windows 8 で動作するアプリを作成してみたい、という方はぜひ覗いてみてください。

monoe's blog http://blogs.msdn.com/b/osamum/archive/2012/12/12/windowsstreapps-youtube.aspx


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-24 (月) 14:38:42 (3966d)