WindowsフォームアプリケーションをC#で作った時のメモ
改行コードに\nとか\rとか\r\nとかが混在している世の中
TextBoxに改行が\nの文字列をペーストしたりするとTextBoxで改行して欲しい所で改行してくれなかったりする。
TextBoxに改行が\nの文字列をペーストしたりするとTextBoxで改行して欲しい所で改行してくれなかったりする。
文字列の改行をEnvironment.NewLineに置き換える必要がある。
TextBoxのペーストイベントを受け取ってそこでクリップボードのテキストに処理をしてからPaste()をしよう。
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 件のコメント:
コメントを投稿