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

わんくま同盟

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

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

■96326 / 7階層)  テキストボックスの文字数の制限を超えたらクリア
□投稿者/ 魔界の仮面弁士 (2908回)-(2020/11/11(Wed) 14:29:48)
2020/11/11(Wed) 14:32:33 編集(投稿者)

No96294 (とんかつ さん) に返信
> furuさんのやり方だと次をコピペしたら
> 先頭の文字が減ってしまいます。

何か他の処理が併用されていないでしょうか?
(たとえば、IME や SEP の on/off 制御とか、フォーカスの強制移動処理とか)


また、複数の実装方法を同時に試していたりはしないでしょうか。

ここまでに幾つかの案が提示されていますが、
Text が変更されてから補正する方法(TextChanged 等)もあれば、
Text が変更される前にクリア処理する方法(KeyPress 等)もあるので、
組み合わせ方を間違えると、誤動作するかも知れません。



No96325 (夜叉姫 さん) に返信
> テキストがない状態で
> abcdefghij を貼り付け(ctrl+V)して abcdefghij にして
> klmnopqrst を貼り付け(ctrl+V)すると klmnopqrst になります。

クリップボードの中身が 11 文字以上あった時の処置も
考えておいた方が良いかもしれませんね。

クリップボードにコピーする際に、うっかり前後の
改行やタブを含めてしまうことがあるかも知れませんので。


> 個人的に、貼り付けは Ctrl+V でするので気が付きませんでしたが
> 右クリックして貼り付けすると KeyPress は発生しませんね。

キーボードからの操作であったとしても、
[Shift]+[Insert] での貼り付け操作(※)や
[Shift]+[F10] あるいは [Application] キーのコンテキストメニューでも
KeyPress イベントが発生しない事になります。

※Shift + Insert は、16 bit 版 Windows の頃からある貼り付けショートカットです。
 Ctrl+C は、コマンド プロンプトの動作を停止させてしまうといった弊害があるため、
 Ctrl+C / Ctrl+X / Ctrl+V の代わりに、あえて昔ながらの
 Ctrl+Insert / Shift+Delete / Shift+Insert を好む人たちも居ます。


しかし No96310 で KOZ さんが書かれている WM_PASTE を捕らえる方法であれば、
マウス等からの貼り付け動作でも、正しく捉えられると思います。

マウスの右クリックの他、Windows Touch や Pen からのジェスチャー操作や
ロングタップによるコンテキストメニューに対しても、KeyPress では
捉えきれませんが、WM_PASTE メッセージならば拾えそうです。



個人的には No96296 のとっちゃんさんの方法に一票。

11 文字目を入れようとすると文字が突然消えてしまうという UI は、初めて見る人を混乱させますが、
貼り付けボタンを押すとクリップボードの中身で置き換えられるという動作なら、初見でも分かりやすそう。
編集キー/

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

テキストボックスの文字数の制限を超えたらクリアしたい / とんかつ (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
    └ Re[3]: テキストボックスの文字数の制限を超えたらクリアしたい / KOZ (20/11/10(Tue) 17:27) #96310
      └ 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
            └ テキストボックスの文字数の制限を超えたらクリア / 魔界の仮面弁士 (20/11/11(Wed) 14:29) #96326 ←Now
              └ Re[8]: テキストボックスの文字数の制限を超えたらクリア / とんかつ (20/11/11(Wed) 15:00) #96327 解決済み

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