Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Text Editor
Text Editor の開発
C# で実用的な Text Editor を開発します。
前田稔(Maeda Minoru)の超初心者のプログラム入門


開発の経緯
- 従来使われていた Windows System の文字コードは MultiByte(ANSI) ですが、最近では Unicode が主流になってきました。
そこで MultiByte や Unicode に対応した Text Editor を開発することにしました。
Text Editor の基礎 では Editor 開発の基礎を解説していますが、今回は実用的なアプリを開発します。
Text Editor を自作するメリットは、自分の好みに合わせて自由に設計できることです。
今回も私の好みに合わせて、例えば次のような機能を持たせています。
- UTF8, UNICODE, Shift-JIS, EUC など様々なコードに対応する。
もちろんコードを変換して書き出すことも出来る。
コマンドラインからファイル名とコードを指定して起動することが可能で、この方法を使えば「ほとんど全てのテキストファイル」に対応出来る。
- TabControl で複数のファイルを開いて、クリック一発で切り替える。
ファイル毎に Editor を起動して、ウインドウを並べて表示することもできる。
- 通常のコピー/カット/ペーストに加えて、行単位で「コピー&ペースト」する。
さらにカット(コピー)した行をスタックに記録して、順に取り出すこともできる。
- 現在編集中の TEXT 位置をファンクションキー対応で記憶する。
- 拡張子に関連づけて、ダブルクリックやドラッグ&ドロップで起動する。
- 編集中のファイルを既定のプログラムで起動する。
例えば、HTML を編集しながらブラウザから起動する。
- 良く参照する複数のファイルを登録しておいて、メニューから一発でファイルをオープンする。
- フォントの種類やサイズを自由に設定することができる。
- 二つのファイルを比較して、異なる箇所を調べることができる。
- タブコードの空白変換や「<>」を「< >」に変換する。
これらの機能はホームページに掲載する HTML を作成するときに便利な機能です。
これ以外にも、自分でプログラムするのですから自由自在です。
- 開発環境は Windows8.1(2014/04/13 Update 版に更新) + Visual Studio 2005 です。
最近(2014/03 頃に)久しぶりに調べると、空のプロジェクトが使えなくなっていました。
これではチュートリアルの役目を果たさないので、自動生成を使って組み直すことにします。
開発環境が異なると、基本的には同じでも、何かと違いがあるので注意して下さい。
特に Windows8 Store アプリとは、大きな違いがあります。
Text Editor の基礎では TextBox を使っていますが、今回は RichTextBox を使います。
- ベースとなるプロジェクトを 自動生成を使って Form を作成する を参照して構築して下さい。
Form(ウインドウ)のサイズを適当に広げて下さい。
次のページを参照して、ツールボックスからメニューを貼り付けます。
ToolBox からメニューを貼り付ける
今回は簡単なメニューを設定します。
| グループ | メニュー | メソッド |
| File(&F) | Exit(&X) | Exit メソッド |
Exit() メソッドです。
private void Exit(object sender, EventArgs e)
{
this.Close();
}
|
- TabControl を参照して、ツールボックスからタブコントロールを貼り付けます。
TabControl の Anchor に Top,Left を Dock に "Fill" を設定して下さい。
Dock を設定すると、ウインドウの拡大/縮小でサイズを合わせてくれます。
TabControl の規定値では tabPage1, tabPage2 が設定されるので tabPage2 を選択して右クリックメニューで削除して下さい。
- タブコントロールに RichTextBox を貼り付けて下さい。
Anchor に Top,Left を Dock に "Fill" を設定するとウインドウの拡大/縮小でサイズがフィットします。
- 空のプロジェクトから構築すると設定しなければならないのですが【自動生成では不要】だと思います。
Form1() の Constructor に次の行を追加します。
Main() 関数に STAThread を設定します。
[STAThread]
public static void Main()
{ Form1 mf = new Form1();
Application.Run(mf);
}
|
- プログラムを実行して、メニューと TabControl と RichTextBox の表示を確認して下さい。
ウインドウを拡大/縮小すると TabControl と RichTextBox のサイズがフィットします。
手順どおり作成するとうまく出来ると思うのですが、TabControl が消えたり、フィットがうまくいかないときは Form の Resize で座標を計算して配置して下さい。

[Next Chapter ↓] ファイル入出力
超初心者のプログラム入門(C# Frame Work)

※・