フォームいっぱいにテキストボックスを配置し複数行入力を受け入れるようにしてあります。
ソース
//
// テキストボックス
//
using System;
using System.Windows.Forms;
using System.IO;
using System.Text;
// コンパイル
// csc /t:winexe Textbox.cs
class Form1 : Form {
MenuStrip menuBar = new MenuStrip(); // メニューバー
ToolStripMenuItem menuFile = new ToolStripMenuItem {
Text = "ファイル",
};
ToolStripMenuItem menuNew = new ToolStripMenuItem {
Text = "新規",
};
ToolStripMenuItem menuOpen = new ToolStripMenuItem {
Text = "開く",
};
ToolStripMenuItem menuSave = new ToolStripMenuItem {
Text = "上書き保存",
};
ToolStripMenuItem menuSaveAs = new ToolStripMenuItem {
Text = "名前をつけて保存",
};
ToolStripMenuItem menuClose = new ToolStripMenuItem {
Text = "終了",
};
TextBox txtbox = new TextBox {
Dock = DockStyle.Fill,
Multiline = true, // 複数行
AcceptsReturn = true, // エンターキーで改行
ScrollBars = ScrollBars.Both, // 垂直水平スクロールバー
};
// コンストラクタ
Form1() {
menuFile.DropDownItems.AddRange(new ToolStripItem[] {
menuNew, menuOpen, menuSave, menuSaveAs, menuClose});
menuBar.Items.Add(menuFile);
Controls.AddRange(new Control[] {
txtbox, menuBar});
// メニューのクリックイベント
// 開く
menuOpen.Click += (o, e) => {
var dialog = new OpenFileDialog {
Filter = "TXETファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*",
};
if (dialog.ShowDialog() != DialogResult.OK) return;
Text = dialog.FileName;
using(var sr = new StreamReader(Text, Encoding.UTF8)) {
txtbox.Clear();
txtbox.Text = sr.ReadToEnd();
};
};
// 新規
menuNew.Click += (o, e) => txtbox.Clear(); // クリア
// 上書き保存
menuSave.Click += (o, e) => {
if (Text == "") return;
using(var sw = new StreamWriter(Text, false, Encoding.UTF8)) {
sw.Write(txtbox.Text);
};
};
// 名前をつけて保存
menuSaveAs.Click += (o, e) => {
var dialog = new SaveFileDialog {
Filter = "TXETファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*",
};
if (dialog.ShowDialog() != DialogResult.OK) return;
Text = dialog.FileName;
using(var sw = new StreamWriter(Text, false, Encoding.UTF8)) {
sw.Write(txtbox.Text);
};
};
// 終了
menuClose.Click += (o, e) => Close();
}
// エントリーポイント
[STAThread]
static void Main() {
Application.Run(new Form1());
}
}
コメント