- ベストアンサー
NumericUpDownコントロールに数字以外を入力したい
VB2003環境なのですが、NumericUpDownコントロールに 数字以外を入力できるようにしたいのですが そのようなカスタムコントロールを作る方法がありましたら 教えて頂きたいです。 感じとしてはTextBoxにSpinButtonをくっ付けた感じのものが 欲しいのですが方法がありましたら教えて頂きたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
やるとするならUpDownBaseを継承したユーザーコントロールを作成して UpButton、DownButton、UpdateEditTextをそれぞれOverridesで作成といった具合でしょう dim _value as Integer Public Overrides Sub UpButton() if _value < 25 then _value += 1 End Sub UpdateEditText() End Sub Public Overrides Sub DownButton() if _value > 0 then _value -= 1 End Sub UpdateEditText() End Sub Protected Overrides UpdateEditText() dim ch as Char() = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Me.Text = ch( _value ) End Sub といった具合でしょう if _value < 25 then や if _value > 0 then などは適宜修正しましょう
その他の回答 (2)
- soratombi
- ベストアンサー率50% (1/2)
imogasiさんもいらだっているように、1)数字以外を入力したいのになぜ、NumericUpDownコントロールを検討しているのか、2)テキストボックスでは何が不足なのか、質問文から読み取る事ができません。 なにをやりたいのか、上記の1)2)に答える形で示してもらえれば前に進めると思います。
お礼
ご回答ありがとうございます。 NumericUpDownの中で日数や時間を扱いたいと考えています。 ●年●月●日等として●のところにカーソルがある状態で UpDownボタンをクリックするとそこの数字が変わるという感じです。 日付を扱うコントロールでは0日や0時間に対応できないので 別の方法を考えているのですが、NumericUpDownに 文字を入力できるようにしてTextChangeなど変更のイベントを 拾えれば対応できるのではと思いました。 TextBoxとSpinButtonという組み合わせも考えたのですが、 後で使う時に1つのコントロールにまとまっていたほうが便利かとおもいました。 まずはredfox63様にお示し頂いた方法を試してみたいと思います。 どうもありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
何でそんなことを考える必要が有るのか。回答者を煩わすのだから、必要理由を書くべき。 NumericUpDownコントロールと文字入力は相容れない。 コンボボックスのスクロールでよいのでは。 思いつきの質問を丸投げで発せられては、回答者は大変。 自分で基礎まで勉強して作れば。
お礼
ご回答ありがとうございます。これをやりたい理由はsoratombi様の ところに書いたようなことなのですが、こちらの方法で試してみたいと思います。 少ない情報の中を具体的に教えていただいてどうもありがとうございました。