今回は改行コード変換ツールを開発してみましょう。
仕組みは単純で、改行コードをReplaceメソッドで置き換えるだけなのですが、それだけでは面白くないので、画面を左右に分割する設定方法と、ファイルのドラッグ&ドロップに対応したいと思います。
Contents
概要を把握しよう
今回作る改行コード変換ツールの画面レイアウトは次の様になります。

左に変換対象のテキストを張り付けて「変換実行」ボタンをクリックすると、指定された改行コードで置き換えるというものです。
仕様を整理しよう
改行コード変換ツールの仕様は以下の通りです。
- テキストボックスを左右に配置し、左右の幅の比率をマウスで変更できる
- 左のテキストボックスに変換したいテキストを張り付け、変換した結果が右のテキストボックスに表示される
- 任意のテキストファイルをドラッグ&ドロップで左のテキストボックスに張り付けられる
- 改行コードは CR,LF,CRLFの3種類に対応する
- 右のテキストボックスに表示された変換結果はクリップボードにコピーできる

フローで処理イメージをつかもう
それでは、フローチャートで処理手順を理解しておきましょう。
と言っても、今回は非常に簡単です。
画面から変換したい文字コードと変換後の文字コードを取得し、TextBoxコントロールのTextプロパティに対して、Replace メソッドを実行するだけです。

使うコントロールを決めよう
今回は、Label、Button、ComboBox、TextBox、SplitContainer の5種類のコントロールを使います。
SplitContainer とは、画面を左右、または上下に分割するためのコントロールです。
SplitContainerの上に様々なコントロールを乗せることが出来るので、コンテナとも呼ばれています。
SplitContainerはツールボックスからドラッグ&ドロップで画面に張り付けることが出来ますが、張り付け方が少し特殊なので、詳細は こちら にてご確認下さい。

プロジェクトを作ろう
今回は LineFeedChanger という名前でプロジェクトを作ります。
Visual Studio を立ち上げて、プロジェクト名にLineFeedChangerと入力し、右下の「作成」ボタンをクリックしたら完成です。

プロジェクトの作り方が分からない方は こちら の最初の部分に詳しく記載しています。
画面レイアウトを作ろう
プロジェクトが出来たら、コントロールを張り付けていきましょう。
今回は画面を左右に分割するため、SplitContainerというコントロールを使用します。
下記の動画を参考に、コントロールを配置して下さい。

下記の様なレイアウトになります。

Form.csの名前を変えよう
Formのファイル名が Form1.cs になっているので、今回もまたMainForm.cs に変更したいと思います。
Visual Studio の右側にあるソリューションエクスプローラーから「Form1.cs」を右クリックし、表示されるメニューから「名前の変更」を選び、MainFormに変更します。

コントロールに名前を付けよう
次はコントロールに名前を付けていきましょう。
今回新しく登場した SplitContainer については、今回の仕様ではプログラムで制御する必要がないため、特に名前は付けません。

コントロールの役割(Labelを除く) | コントロールに付ける名前 |
---|---|
プロジェクトが出来上がった際、最初に自動で作成されるWindow | MainForm |
変換対象入力用のTextBox | uxBeforeText |
変換対象の文字コード選択ComboBox | uxBeforeLineFeed |
変換結果表示用TextBox | uxAfterText |
変換結果の文字コード選択ComboBox | uxAfterLineFeed |
変換実行Button | uxExecute |
クリップボードへButton | uxCopyClipboard |
今回もいくつかのコントロールについて、一部のプロパティに値を設定したいと思います。
コントロール名 | プロパティ名 | 設定する値 |
---|---|---|
MainForm | Font Text | Meiryo UI,9pt 改行コード変換 |
uxBeforeText | MaxLength Multiline Anchor ScrollBars | 0 true Top, Bottom, Left, Right Both |
uxBeforeLineFeed | Anchor | Top, Right |
uxAfterText | MaxLength Multiline Anchor ScrollBars | 0 true Top, Bottom, Left, Right Both |
uxAfterLineFeed | Anchor | Top, Right |
uxExecute | Anchor Text | Top, Right 変換実行 |
uxCopyClipboard | Anchor Text | Top, Right クリップボードへ |
”改行コード”のLabel | Anchor | Top, Right |
SplitContainer | Anchor | Top, Bottom, Left, Right |
今まで作ったプログラムでは、TextBoxは1行しか入力できませんでした。
しかし、いくつかのプロパティを設定することで複数行の入力が出来る様になります。
プロパティ名 | 解説 |
---|---|
MaxLength | 入力可能な文字数の設定。初期値は32767文字。 0にすると文字数制限が無くなり、メモリが許す限り入力できるようになる。 |
MultiLine | True にすることで複数行の入力が可能になる。初期値は False。 |
ScrollBars | スクロールバーの表示/非表示設定。None,Horizontal,Vertical,Bothから選ぶ。 Bothは縦スクロールバーが常に表示され、必要に応じて横スクロールバーが表示される。 |
WordWrap | 行を折り返して表示するか否かの設定。初期値はTrue。 Falseにすると折り返さなくなるため、ScrollBarsプロパティに応じてScrollBarsが表示される |
にちみに、今回の改行コード変換ツールにおいては、WordWrapを設定していません。
というか、設定し忘れていました。
必要ならWordWrapをtrue に設定して下さい。
イベントハンドラを作ろう
レイアウトが終わったら、イベントハンドラを作成します。
今回はLoadイベント、「変換実行」ボタンと「クリップボードへ」のClickイベントの合計3個のイベントハンドラを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace LineFeedCodeChanger { public partial class MainFrom : Form { public MainFrom() { InitializeComponent(); } private void MainFrom_Load(object sender, EventArgs e) { } private void uxExecute_Click(object sender, EventArgs e) { } private void uxCopyClipboard_Click(object sender, EventArgs e) { } } } |
実行して動作を確認してみよう
ここまで出来たら、VisualStudioの上部にある「開始」ボタンによりプログラムを実行してみて下さい。

まとめ
今回は概要説明と、画面の作成までを行いました。
今回新しく登場した SplitContainer は重宝するコントロールなので、是非使いこなせるようになってください。
次回はドラッグ&ドロップを含む全ソースコードの解説を行いたいと思います。