ものえおさむ

C#で作る、あなただけのメモ帳 ~外観の作成~

2008-10-31 14:05:00

はじめに
このブログでは、"Windows アプリケーションってどう作るのかよくわからない" といったプログラマ向けに Visual C# 2008 Express Edition (無償) を使用した Windows アプリケーションに作り方について説明しています。
Visual C# 2008 Express Edition (無償)(※) の入手方法については
この記事 を、プロジェクトのコンパイル方法については この記事を参照してください。 

(※)大学生、専門学校生の方は DreamSpark で、商用の Visual Studio を無償で入手することもできます。 

PDC 2008 とか、新 OS とか、クラウドとか SaaS とか RIA とかいった、近代 IT 業界注目の話題とはまったく関係なく、今回も地味に C# を使った Windows アプリケーションの作成について書こうと思います。

そもそもこのブログを始めたきっかけというのが、Web アプリケーションをガリガリに書いている知人から "Windows アプリケーションなんて、どう作ったらいいか分らない"と言われたからというのがあります。

そこで、ここでは "Windows アプリケーションらしい、Windows アプリケーション" を作成していきたいと思います。

さて、それでは "Windows アプリケーションらしい" とはどういうことでしょう?

"~らしい" という表現は、ある存在を定義づける特質がより顕著に表れている場合に使用されるものと思います。

たとえば "男らしい"、"女らしい" がそれですよね。

しかし、この "らしい" のは簡単ではありません。単に男性として生まれただけでは "男らしい男" ではないわけですし、女性もしかりです。

かつて、フランスの思想家ボーボーワール女史はその著書『第二の性』でこう書きました。

「人は女に生まれるのではない、女になるのだ」と。

つまり、Windows OS 上で動作するからといって、それが  "Windows アプリケーションらしい、Windows アプリケーション" とは言えないと思うのです。

では Windows アプリケーションの特徴ってなんでしょう?

私個人的にはこんな感じだと思ってます。

"Windows らしいアプリケーション" の特徴

1 アプリケーションウィンドウを持っている
2 ウィンドウ上部にメニューバーがある
3 マウスボタンの右クリックでメニューが表示される
4 Windows の標準的なショートカットキーに準じた対応をしている
5 アプリケーションウィンドウへのドラッグ & トロップが可能である
6 コマンドラインからの起動時に引数を渡せる

そして、この Windows "らしさ" を体現した最少のアプリケーションこそ、私がもっとも愛して止まないアプリケーションが "メモ帳" (Notepad.exe) だったりします。

シンプルにして機能的。スクリプトも、HTML も書ければコンパイルが必要な言語のソースも書ける。プロセスを強引に Kill してもあまり気が咎めないし、必要な時にはいつでも起動してくれる。
そしてユーザーによっては、さらに機能的、かつ優秀な秀○エディタなどにとって代えられてしまい、一度も起動されるともなくその一生を終えることもある。その中途半端な不遇さ加減がまたタマらなく私の心をくすぐるのであります。
第三者が私の PC を使用したときの "え、秀○エディタ入ってないの?!" という、驚きの混じった問いかけを聞くたびに、心の中で微笑まずにはいられないのであります。

そこでここでは、数回に分け Microsoft Visual C# 2008 Express Edition(無償) を使って、今やどの OS にもデフォルトで搭載されているテキストエディタをわざわざ作製して Windows アプリケーション作成の基礎を紹介していこうと思います。

 

Microsoft Visual C# 2008 Express Edition を使用した
テキストエディタの作成

今回はプロジェクトの作成から、メニューの作成とテキストボックスの配置など、外観の作成までの手順を紹介させていただきます。

手順
====
まずは Windows フォームアプリケーションのプロジェクトを作成します。

プロジェクトの作成については、この記事の内容を参考に、記事中 "がっかりするほど簡単な Windows フォームアプリーケーションの作成手順" の手順 6 までを行ってください。

メニューの作成
-------------------
1. フォームデザイナ上の Windows フォームを作業しやすい大きさにサイズ調整し、画面左の [ツールボックス] 内、[すべての Windows フォーム] より [MenuStrip] をドラッグ & ドロップしてフォーム上に配置します。

2. 追加した MenuStrip コントロールをクリックすると、メニューの位置に "ここへ入力" と表示されるので、さらにクリックし、以下の文字を入力します。

ファイル(&F)

アルファベットの前に "&" を記述することでショートカットが割り当てられ、[Alt] + [(アルファベット)] キーで、メニューを展開できるようになります。

3. 追加したメニューアイテム "ファイル(&F)" の下に、同じ手順で以下のメニューアイテムを追加します。

新規作成(&N)

4. 追加したメニューアイテム "新規作成(&N)" が選択された状態で、プロパティウインドウの項目 [ShortcutKeys] 内のドロップリストダウンボタンをクリックします。
ショートカットキーを設定するパネルが表示されるので、以下のように設定します。

  修飾子 : Ctrl
  キー : N

この作業でダイレクトなショートカットキーが設定され、メニューを展開しなくても [Ctrl] + [n] キーを押下することで、メニューアイテムのイベントハンドラを呼び出すことができます。

さらにプロパティウィンドウの項目 [(Name)] の内容を以下に書き換えます。

  (Name) : menuNew
 
これは、ここに指定された名前がイベントハンドラの関数名に使用されるため、日本語のメニューのままだと精神衛生上よろしくないからです。

ちなみに VisualStudio は Unicode 対応されているいるので関数名を日本語で記述しても問題はありません。

5. 手順 4 の内容で、[ファイル(&N)] メニュー下に、以下の各メニューを作成します。

([ファイル(&N)] メニュー下のアイテム設定)

アイテムのテキスト ショートカット (Name)プロパティ
開く(&O)... [Ctrl] + [O] menuOpen
読み取り専用で開く(&R)... [Ctrl] + [R] mnuOpenReadOnly
上書き保存(&S) [Ctrl] + [S] menuSave
名前を付けて保存(&A)... mnuSaveAdd
-(※ハイフンを入力)
エディタの終了(&X) menuEnd

6. 手順 2 の内容を参考に、[ファイル(&N)] メニューの右横に [編集(&E)] メニューを作成します。

7. 手順 4 の内容を参考に、[編集(&E)]  メニュー下に、以下の各メニューを作成します。

([編集(&E)] メニュー下のアイテム設定)

アイテムのテキスト ショートカット (Name)プロパティ
切り取り(&T) [Ctrl] + [X] menuCut
コピー(&C) [Ctrl] + [C] menuCopy
貼り付け(&V) [Ctrl] + [P] menuPaste
削除(&L) [Del] menuDelete
-(※ハイフンを入力)
検索(&F)... [Ctrl] + [F] menuFind
置換(&R)... [Ctrl] + [H] menuReplace
行へ移動(&G)... [Ctrl] + [G] menuJump
-(※ハイフンを入力)
すべて選択(&A) [Ctrl] + [A] menuAllSelect

設定が完了したら [F5] キーを押下してプロジェクトを実行し、各メニューをクリックしてメニューアイテムが展開されることを確認してください。

また、[Alt] + [(アルファベット)] キーを押下して目的のメニューが展開されるか確認してください。

ステータスバーの追加
-------------------------
実行時の状況を表示するためのステータスバーを追加します。

ステータスバーを追加するには、画面左の [ツールボックス] 内、[すべての Windows フォーム] より [StatusStrip] をドラッグ & ドロップしてフォーム下部に配置します。

(フォームに StatusStrip を追加したところ)

配置した StatusStrip コントロール左端のドロップダウンボタンをクリックし、ステータスバーに文字列を表示するための StatusLabel を追加します。

(フォームに StatusStrip に StatusLabel を追加するところ)

以上でステータスバーの追加は完了です。

StatusLabel に表示されている "toolStripStatusLabel1" という文字は、[プロパティ] ウィンドウの項目 [Text] でクリアしておくと良いでしょう。

テキストボックスの追加
----------------------------
文字を入力するためのテキストボックスを追加します。

今回は、単純にフォーム上にコントロールを配置するだけではなくて、いくつかの設定が必要になりますので以下の手順に従って作業してください。

手順
1. 画面左の [ツールボックス] 内、[すべての Windows フォーム] より [TextBox] をドラッグ & ドロップしてフォーム上に配置します。

2. 配置した TextBox コントロールが配置された状態のまま、[プロパティ] ウィンドウ内 [MultiLine] を "True" に変更します。

3. TextBox をメニューバーとステータスバーの間いっぱいに広げます。

4. TextBox が選択された状態で [プロパティ] ウィンドウの項目 [Anchor] 内のドロップダウンボタンをクリックし、表示されるレイアウト設定画面の縦横すべての ラインを選択します。

このアンカーの指定を行うことで TextBox は、配置されているフォームの大きさに合わせ、自動的にリサイズしてくれるようになります。

以上で TextBox の配置は完了です。

[F5] キーを押下してプロジェクトを実行し、マウスでウィンドウの大きさを変更した際に、TextBox の大きさも自動的に追従して変化することを確認してください。

(プロジェクトを実行したところ)

これでテキストエディタの外観の作成は、ほぼ完成しましたので、次回からはメニューに実際の処理を追加していきたいと思います。

 

その他
====
めずらしいセミナーを見つけたのでご紹介。
なんと、年配者向けの Windows Home Server の無償セミナーです。

『Grand Geek のための Windows Home Server セミナー ~ 70 歳からの Windows Home Server 活用術~』
http://msevents.microsoft.com/cui/EventDetail.aspx?culture=ja-JP&EventID=1032394218

 "まだまだ若い者には負けんぞい!!" という IT リテラシの高いご年配の方がいらっしゃいましたらぜひご参加いただければと思います。(お弁当も出ますよ)

ではまた。

※マイクロソフト社員のコミュニティ参加について

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 4件のコメント
#1   2009-09-03 09:43:07
 menuPasteが重複してますよ
#2 ものえおさむ   2009-09-15 17:26:52
anonymous さん
>menuPasteが重複してますよ
ありがとうございます。修正させていただきました。
私のブログをちゃんと見てくれる人がいるなんて、感激です!!
#3 anonymous   2011-02-13 19:39:12
メモ帳がつくれるなんて感激です
作り方をのせてくれてありがとうございます
#4 c#ますた   2016-08-14 21:17:55
このブログに感謝です。
勉強はじめました。
  • 新着記事
  • 特集
  • ブログ