- - PR -
TextBoxへの文字列貼り付けを制限する方法について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-20 13:29
初めまして。C#.NETでの開発に携わっている者です。
現在自作のTextBoxを使用しており、それを数値専用にしたくて、 文字列貼り付けが行われた際に内容チェックを行おうと試みた のですが...。 CTRL+Vの貼り付けは認知して内容確認&制御出来たものの、 右クリックのContextMenuからの貼り付けを制御出来ません。 どなたか、ContextMenuからの貼り付けが発生した事を認知する 方法をご教授願います。 ※ちなみに、CTRL+Vの貼り付けの制御については、OnKeyPress をオーバーライドして作成し、その中でKeyCharから判断しました。 | ||||
|
投稿日時: 2004-12-20 14:23
ゴンタさん、こんにちは。
未確認ですが、OnTextChanged はどうでしょう? | ||||
|
投稿日時: 2004-12-20 14:53
きくちゃんさん、初めまして。ご返答ありがとうございます。
きくちゃんさんがおっしゃる通り、OnTextChangedで拾ってはみたのですが、 @通常の文字入力との区別が出来ない A文字入力の途中から貼り付けが行われた場合などは、入力済文字列と 貼り付けられた文字列の境界が判断出来ない(?) 等幾つか問題があり、なかなかうまくいきません。 先ほどCTRL+Vの時にはOnKeyPressをオーバーライドして内部処理した、と 書きましたが、 そこでは、CTRL+Vが押下されたと判断した場合、クリップボードの中身を 確認後、貼り付ける/貼り付けないの判断を行っています。 ContextMenuからの貼り付けの場合も、可能ならば上記と同様の対応を 行いたいのですが...。 | ||||
|
投稿日時: 2004-12-20 14:56
ContextMenuをカスタマイズしては?!
_________________ IEEE-CSDP 2004-2007 | ||||
|
投稿日時: 2004-12-20 18:24
ゴンタさん、こんばんは。
と、いう事は、それぞれ区別する必要があるわけですね? 私は逆に、通常の文字入力もショートカットキーによる貼り付けも全部、一カ所でカバーできるんじゃないかと考えてました。 そうすると、iStationさんの提示された方法が手っ取り早いんじゃないでしょうか。 | ||||
|
投稿日時: 2004-12-20 18:56
→きくちゃんさん
そうなんです、こっちの説明不足で申し訳無いです。 自作TextBoxですが、その中でプロパティを利用して入力タイプの 制限をかけており、その中に数値タイプがある、というわけです。 →iStationさん、きくちゃんさん 返答をもらった後、やっぱりOnMouseDownをオーバーライドして、 その中でクリップボードの中身を確認し、ContextMenuの貼り付けを 使用不可にしてみるしかないかなあ、と思ったのですが。。。 試しに自作TextBox内でContextMenuのコンストラクタを呼び出したところ、 new ContextMenu()したはずなのに、 以前と同じコンテキストメニューが右クリックで表示されてしまいました。 これってどういう事なんでしょう?ContextMenu自作って不可なんでしょうか? (今までにContextMenu自体を編集した経験は有りません) ContextMenu編集について、何かテクニック等ご存知であれば、教えて頂けませんか。 | ||||
|
投稿日時: 2004-12-20 19:19
というような実装でいかがでしょう? [ メッセージ編集済み 編集者: iStation 編集日時 2004-12-20 20:40 ] | ||||
|
投稿日時: 2004-12-20 19:54
iStationさん、ありがとうございます!
教えて頂いたコードを参照して一部記述したところ、自作の ContextMenuが表示される様になりました。 これで何とか目的は達成できると思います。 ところで、この方法はContextMenu完全自作ですが、 元々持っているContextMenuをそのまま使用して、自作TextBox内から ”貼り付けだけを使用不可にする”といったカスタマイズって 出来るのでしょうか? よろしければ、上記についても教えて下さい(自分でもtryしたけど失敗 したので)。 |