C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■96310 / 3階層)  テキストボックスの文字数の制限を超えたらクリアしたい
□投稿者/ KOZ (150回)-(2020/11/10(Tue) 17:27:51)
No96288 (とんかつ さん) に返信
> 基本的な使い方はクリップボードから英数字10文字のコピペの繰り返しです。
> 次をコピペした時に以前の文字列がクリアされれば問題ありません。

こんな感じでどうでしょう?

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    class TextBoxEx : TextBox
    {
        const int WM_CHAR = 0x0102;
        const int WM_PASTE = 0x0302;

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_CHAR:
                    if (!Char.IsControl((char)m.WParam))
                    {
                        if (TextLength >= 10)
                        {
                            this.Clear();
                        }
                    }
                    base.WndProc(ref m);
                    break;

                case WM_PASTE:
                    if (Clipboard.ContainsText())
                    {
                        var ctx = Clipboard.GetText();
                        foreach (var c  in ctx)
                        {
                            SendMessage(this.Handle, WM_CHAR, (IntPtr)c, (IntPtr)1);
                        }
                    }
                    break;

                default:
                    base.WndProc(ref m);
                    break;
            }
        }
    }
}

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: テキストボックスの文字数の制限を超えたらクリアしたい /とんかつ →Re[4]: テキストボックスの文字数の制限を超えたらクリア /夜叉姫
 
上記関連ツリー

テキストボックスの文字数の制限を超えたらクリアしたい / とんかつ (20/11/09(Mon) 16:37) #96281
Re[1]: テキストボックスの文字数の制限を超えたらクリアしたい / WebSurfer (20/11/09(Mon) 17:26) #96284
Re[1]: テキストボックスの文字数の制限を超えたらクリアしたい / 魔界の仮面弁士 (20/11/09(Mon) 17:26) #96283
  └ Re[2]: テキストボックスの文字数の制限を超えたらクリアしたい / とんかつ (20/11/09(Mon) 20:56) #96288
    ├ Re[3]: テキストボックスの文字数の制限を超えたらクリアしたい / 魔界の仮面弁士 (20/11/09(Mon) 21:21) #96289
    ├ Re[3]: テキストボックスの文字数の制限を超えたらクリアしたい / furu (20/11/09(Mon) 21:30) #96290
    │└ Re[4]: テキストボックスの文字数の制限を超えたらクリアしたい / 774RR (20/11/10(Tue) 06:20) #96293
    │  └ Re[5]: テキストボックスの文字数の制限を超えたらクリアしたい / とんかつ (20/11/10(Tue) 08:35) #96294
    │    ├ Re[6]: テキストボックスの文字数の制限を超えたらクリアしたい / とっちゃん (20/11/10(Tue) 10:23) #96296
    │    │└ Re[7]: テキストボックスの文字数の制限を超えたらクリアしたい / 774RR (20/11/10(Tue) 10:45) #96299
    │    ├ Re[6]: テキストボックスの文字数の制限を超えたらクリアしたい / ビール呑み (20/11/10(Tue) 10:49) #96300
    │    └ Re[6]: テキストボックスの文字数の制限を超えたらクリアしたい / furu (20/11/10(Tue) 20:14) #96315
    └ テキストボックスの文字数の制限を超えたらクリアしたい / KOZ (20/11/10(Tue) 17:27) #96310 ←Now
      └ Re[4]: テキストボックスの文字数の制限を超えたらクリア / 夜叉姫 (20/11/11(Wed) 11:43) #96317
        └ Re[5]: テキストボックスの文字数の制限を超えたらクリア / furu (20/11/11(Wed) 11:59) #96318
          └ Re[6]: テキストボックスの文字数の制限を超えたらクリア / 夜叉姫 (20/11/11(Wed) 13:50) #96325
            └ Re[7]: テキストボックスの文字数の制限を超えたらクリア / 魔界の仮面弁士 (20/11/11(Wed) 14:29) #96326
              └ Re[8]: テキストボックスの文字数の制限を超えたらクリア / とんかつ (20/11/11(Wed) 15:00) #96327 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信