2020年12月3日木曜日

C#、WinForms、TextBoxへ貼り付け時に\n改行をちゃんと改行させる

WindowsフォームアプリケーションをC#で作った時のメモ

改行コードに\nとか\rとか\r\nとかが混在している世の中
TextBoxに改行が\nの文字列をペーストしたりするとTextBoxで改行して欲しい所で改行してくれなかったりする。
文字列の改行をEnvironment.NewLineに置き換える必要がある。
TextBoxのペーストイベントを受け取ってそこでクリップボードのテキストに処理をしてからPaste()をしよう。
新しい項目を作成して、
using System;
using System.Windows.Forms;

class MyTextBox : TextBox
{
private const int WM_PASTE = 0x0302;

protected override void WndProc(ref Message m)
{
if (m.Msg != WM_PASTE)
{
base.WndProc(ref m);
}
else
{
string pasteText = Clipboard.GetText().Replace("\r\n", "\n").Replace("\n", Environment.NewLine);
Paste(pasteText);
}
}
}
 こういうのを作って、一旦ビルドすると、MyTextBoxコントロールがツールボックスに現れ使えるようになる。

*Designer.csで直接System.Windows.Forms.TextBoxみたいなのをappnamespace.MyTextBoxみたいにする事でTextBoxをMyTextBoxに差し替えれた。

参考リンク

0 件のコメント:

コメントを投稿