|
分類:[C#]
分類:[C#]
はじめまして。
入力制限付きのテキストボックスを作製する必要があり、 管理人様のライブラリにあるExTextBoxを参考にさせていただいてます。 ペーストも制御できてとても良いなぁと思っています。
この入力制限に加えて、 例えば実数で全体桁数、小数点以下桁数を指定できるといった細かい制限を可能にしたいと思っています。 もはやマスクに近い処理で、こういった処理のサンプルを探しても 普通はKeyPress()等で実装するようでした。
しかし、出来るだけ通常のTextBoxと同様に入力できるようにしたく、 やはり貼り付け時も処理したいのです(欲)
例) numeric(5,2)用の制限をかける 現在の入力値が"123.45"である クリップボードに"67"の文字列が入っている "3.4"の部分を選択し、"67"を貼り付け 結果:"126" このような場合、現状の文字列も操作する必要があります。
そこでWndProc()内で、 必要な場合のみTextBoxのTextプロパティを直接編集し、 base.WndProc()は呼ばずにreturnすることで、 思い通りの結果は得られたのですが、とても不安です、、、
WndProc()内でTextプロパティを直接編集するという、 このような事をしても問題ないものなのでしょうか。 当然上位のWndProc内で定義されている WM_CHARやWM_PASTE時の処理をすっとばしてしまう影響がでますでしょうか・・・
ちなみにTextChangeイベントではちらつくので使用したくないのです。 もしWndProc()内でTextプロパティを直接編集することに問題があるとしたら、 この場合、描画を制御するしか解決策はないものでしょうか。
初心者なので、恐るべき行為や勘違いをしているかもしれません。 よろしくお願いします。
|