ログ表示用のテキストボックスを作成してみます。
namespace LogView01;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var logspace = new TextBox()
{
Multiline = true, // 複数行の許可
ScrollBars = ScrollBars.Vertical, // 垂直スクロール
ReadOnly = true, // 読み取り専用
Location = new Point(10, 10),
Size = new Size(512, 256),
Text = "ログが表示されます。",
Parent = this,
};
var entrybox1 = new TextBox()
{
Location = new Point(10, 10 + 256 + 10),
Size = new Size(400, 24),
Text = "こちらに入力した内容がログに追加されます。",
Parent = this,
};
// ログに追加
var entrybtn1 = new Button()
{
Location = new Point(10 + 400 + 10, 10 + 256 + 10),
Size = new Size(50, 24),
Text = "登録",
Parent = this,
};
Action entry_to_log = new Action(()=>
{
if (logspace.TextLength == 0)
{
logspace.AppendText(entrybox1.Text);
}
else
{
string t = Environment.NewLine + entrybox1.Text;
logspace.AppendText(t);
}
entrybox1.Clear();
});
entrybtn1.Click += (s, e) => entry_to_log();
entrybox1.KeyPress += (s, e) =>
{
if (e.KeyChar == (char)Keys.Enter)
{
entry_to_log();
e.Handled = true;
}
};
// ログをクリア
var clearbtn1 = new Button()
{
Location = new Point(10 + 400 + 10 + 50 + 10, 10 + 256 + 10),
Size = new Size(50, 24),
Text = "クリア",
Parent = this,
};
clearbtn1.Click += (s, e) => logspace.Clear();
// ロードイベント
this.Load += (s, e) =>
{
entrybox1.Focus();
};
}
}
登録ボタンを押すとログに追加されます。
TextBoxのReadOnlyプロパティをtureにすることで読み取り専用になります。
ユーザーからの入力が不可になりますが、セットされている文字列をコピーすることはできます。
AppendText()でTextBoxに文字列を追加しています。その際TextLengthプロパティが0の場合そのまま追加しますが、0以外の場合はEnvironment.NewLineで改行するようにしています。また、AppendText()は文字列を追加後カーソルを最終行に移動してくれます。
行数が多くなり画面に収まらなくなるとスクロールするようにしています。スクロールを有効にしている設定はScrollBars = ScrollBars.Verticalの部分です。
あと、TextBox.Clear()を実行することでテキストボックスの内容をクリアしています。
コメント