C#でなにか作ってみたいな!
C#でメモ帳を作ってみたいけど、なにから始めればいいの?
こんにちは。文系出身エンジニアの佐藤です。
プログラミングの学習に少し慣れてきたら、なにか作ってみたくなりますよね。そんな方へお勧めなのが「自分専用メモ帳」なんです。
最初は最小限の機能だけのメモ帳を作成し、技術力がついてきたら自分好みの機能を追加したりできます。今回はそんな「自分専用メモ帳」をC#で方法を解説していきます。
C#で何か作りたい・メモ帳を作ってみたいけど、なにから始めたらいいのか分からないという方には必見の内容になっていますので、ぜひ最後までご覧ください。
それでは、さっそく大まかな手順から解説していきます。
C#でメモ帳を作る手順
何から始めたらいいの? という方の為に簡単に手順を紹介してきます。
① どんな機能を付けるか決める!
今回は基本的な機能(開く、保存、終了)だけ実装します。初めての方はここから始めてみましょう。
自信がある・この機能だけは付けたいというのがあれば、最初にどんな機能をどう実現するか考えておくと後々スムーズです。
② フォームを作成!
まずは見た目から作っていきましょう。フォームを設置して、文字を打つところやメニューも設置します。
③ ボタンやイベントに応じた機能をコーディング!
ようやく機能をコーディングしていきます。ボタンやイベントに応じたものを作成していくだけです。
④ テストしてみる
作った機能が思った通り動くか一通りテストしましょう。もし、不具合があるなら修正します。
⑤ 完成!
テストに問題がなければ完成です!ビルドしたexeを起動して使ってみましょう。
以上の流れでメモ帳を作っていきます。
どんな機能を付けるかは決定したので、次にフォームの作成へ移ります。
フォームを設置して設定しよう
この章ではメモ帳の見た目の部分を作成していきます。
フォームとテキストボックスの設置
まずは、新規作成から「Windowsフォームアプリケーション」を作成しましょう。
名前などを付け「OK」ボタンを押します。しばらく待つと、次のようにフォームが設置された画面が表示されます。
このフォームがメモ帳の本体になります。フォームのタイトルや名前を右下のプロパティで編集していきます。タイトル部分の文字を変えたい時は「Text」、フォームの名称を変更したい時は「(Name)」の項目を編集します。
タイトルが「メモ帳」に変わっていますよね。それでは、実際にメモをする部分を次に設置してみましょう。
メモをする部分はツールボックスから「TextBox」をフォームにドラッグアンドドロップして設置します。
小さい長方形のテキストボックスが設置されました。
しかし、このままでは横にしか広げることが出来ず高さを変えることが出来ませんし、改行もできません。これではメモ帳らしくないですよね、このテキストボックスのプロパティを編集してみましょう。
改行が出来るようにするには「Multiline」というプロパティをTrueに設定します。そして、スクロールバーも表示できるよう「Scrollbar」プロパティをbothに設定します。
これでテキストボックスを自由に広げることが出来るようになりました。
また、メモ帳ならフォームぎりぎりまで入力できる領域があってほしいですよね。そういう時にはDockというプロパティ項目をFillに設定します。Fillは真ん中の四角を選ぶと選択できますよ。
この設定が出来たら、次にメニューを設置してみます。
メニューの設置
よくWindowsアプリには上部に「ファイル」「編集」などのメニューが表示されていますよね。ここではそのメニューを設置します。
設置にするにはツールボックスのメニューとツールバーという項目の中の「MenuStrip」をフォームにドラッグアンドドロップします。
すると、ここへ入力という項目が出現するので、表示したいメニューを入力していきます。
今回は次のようなメニュー構成にしてみます。ここで一旦「開始」ボタンをクリックしてフォームだけ表示してみましょう。
すでにそれっぽくなってきましたね、次は機能をコーディングして実装いきます。
機能を実装しよう
フォーム周りの設定や設置が終了したら、次はコーディングです。まずは読み込みから作っていきます。
開く
既にあるテキストファイルを読み込んで表示できるようにしましょう。
メニューの「開く」を押したときの動きを書きたい時は、フォームの「開く」をダブルクリックします。そうすると、コード画面へ切り替わりボタンをクリックしたときのイベントも自動で作成されます。
さっそく動きを書いていきましょう。ファイルを開くダイアログを表示して、選択したファイルの内容を表示するという流れでコードを書いていきます。
ファイルを開くダイアログについては、こちらの記事で詳しく解説しています。「ダイアログってなんだっけ?」という方はこちらも確認しつつコーディングしてみてください。
using System; using System.IO; using System.Windows.Forms; namespace myMemo { public partial class frm_memo : Form { public frm_memo() { InitializeComponent(); } private void 開くToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "テキストファイル(*.txt)|*.txt"; dialog.Title = "開く"; if (dialog.ShowDialog() == DialogResult.OK) txt_memo.Text = File.ReadAllText(dialog.FileName); } } }
今回はダイアログのフィルタでテキストファイルのみが選択できるよう設定しました。
開始を押して動かしてみると次のように起動しますよ。
memo_test.txtというテキストファイル(内容は「メモ帳のテストです!」)を読み込んでみると、正常に読み込まれました!
次に保存機能を作ってみます。
保存
保存も開くときと同じようにダイアログを表示して保存します。メニューの保存をダブルクリックしてイベントを作成しましょう。
サンプルコードの「保存ToolStripMenuItem_Click」が保存に関する内容です。このように、どんどんイベントが書き足されていきます。
using System; using System.IO; using System.Windows.Forms; namespace myMemo { public partial class frm_memo : Form { public frm_memo() { InitializeComponent(); } private void 開くToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "テキストファイル(*.txt)|*.txt"; dialog.Title = "開く"; if (dialog.ShowDialog() == DialogResult.OK) txt_memo.Text = File.ReadAllText(dialog.FileName); } private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "テキストファイル(*.txt)|*.txt"; dialog.Title = "保存"; if (dialog.ShowDialog() == DialogResult.OK) { File.WriteAllText(dialog.FileName, txt_memo.Text); } } } }
開始を押して「保存」を押してみると、いつもの保存ダイアログが出てきます。
これで保存機能も作成完了です!次に、終了ボタンでメモ帳が終了するようにしましょう。
終了
最後に終了ボタンでメモ帳が終了するよう作っていきます。一応、終了してもいいか聞いてくるように今回は作成します。
「終了ToolStripMenuItem_Click」の部分が終了に関する記述です。
using System; using System.IO; using System.Windows.Forms; namespace myMemo { public partial class frm_memo : Form { public frm_memo() { InitializeComponent(); } private void 開くToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "テキストファイル(*.txt)|*.txt"; dialog.Title = "開く"; if (dialog.ShowDialog() == DialogResult.OK) txt_memo.Text = File.ReadAllText(dialog.FileName); } private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "テキストファイル(*.txt)|*.txt"; dialog.Title = "保存"; if (dialog.ShowDialog() == DialogResult.OK) { File.WriteAllText(dialog.FileName, txt_memo.Text); } } private void 終了ToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("メモ帳を終了します", "終了", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { Close(); } } } }
メモ帳を終了するかどうか選択して終了できるようになりました。保存を忘れても安心ですね。
これで基本的な機能を付けたメモ帳の完成です!
他に実装したい機能について
今回は基本的な機能がついたメモ帳を作成してきましたが、他にありがちな機能を何個か紹介しておきます。筆者の独断と偏見で難しさレベルも付けたので、ぜひ挑戦してみてください!
【すぐ出来るかも】
- 新規作成ボタン
- 上書き保存機能・ボタン
- Ctrl+Sで上書き保存などショートカットキーの設定
- すべて選択
【ちょっと難しい】
- コピー
- 貼り付け
- 切り取り
- 指定の行へジャンプする
【難しめ】
- 元に戻す
- やり直し
- 検索機能
- 置換機能
他にも、自分があったら便利だろうなと思う機能を自由に実装することができます。
どうやったら実現できるかな……と考えるのも学習のひとつであり、なにより楽しいので是非機能を追加してみてください。
まとめ
C#でメモ帳を作る方法について解説しました。
何かを作ってみたいと思ってる方にはぴったりな題材なので、ぜひここからどんどん自分好みに作り上げてください。
それでは、また次の解説で!