C#のNumericUpDownについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
バグ

C#のNumericUpDownについて

#1

投稿記事 by バグ » 15年前

OSはWindowsXP、言語はC#2.0、環境はVS2005PEで、.NET Framework 2.0です。

今回はNumericUpDownについての質問です。

あのコントロールの値を増減させるUpDownボタンがありますよね?
デフォルトのサイズだと小さすぎてタッチパネルでの操作が困難なので、サイズを大きくし、位置も左右に変更したいです。(※画像参照)

おそらくスクロールバーを使用しているのか、フォントサイズを変更しても縦に伸びるだけで横方向のサイズはほとんど変わりませんし、UpDownBaseクラスを継承させてカスタムしようとしましたが、ボタンのサイズを変更できそうな部分は見当たらず…

RepeatButtonというコントロールを使って自作しようと思いましたが、現状の環境ではSysytem.Windows.Controls名前空間が参照できず…

行き詰ってしまいまして、ここに書き込みました。なんとか代替案でもかまいませんので、良い方法がありましたら、教えていただけないでしょうか?

よろしくお願いします。

バグ

Re:C#のNumericUpDownについて

#2

投稿記事 by バグ » 15年前

書いていて気付きました…RepeatButtonを自作すればよさそうですね(^_^;)
ちょっとやってみますが、アイデアは引き続き募集させていただきます。
よろしくお願いします。

YuO

Re:C#のNumericUpDownについて

#3

投稿記事 by YuO » 15年前

> あのコントロールの値を増減させるUpDownボタンがありますよね?
> デフォルトのサイズだと小さすぎてタッチパネルでの操作が困難なので、サイズを大きくし、位置も左右に変更したいです。(※画像参照)

スピンコントロールに関して,タッチ操作を行う場合は非推奨とされています。
以下は,Windows ユーザーエクスペリエンスガイドラインの該当項目です。
MSDN: スピン コントロール
http://msdn.microsoft.com/ja-jp/library ... ghtcontrol
> タッチ パネルやペンを使用するユーザーが主な対象かどうか。該当する場合は、代わりにドロップダウン リストを使用するようにします。


> おそらくスクロールバーを使用しているのか、フォントサイズを変更しても縦に伸びるだけで横方向のサイズはほとんど変わりませんし、UpDownBaseクラスを継承させてカスタムしようとしましたが、ボタンのサイズを変更できそうな部分は見当たらず…

Scroll Barではなく,Up-Downという標準のコントロールです。
MSDN: Up-Down Control
http://msdn.microsoft.com/en-us/library/bb759880.aspx

で……NumericUpDownを含むFormに対して,Control.Controlsを使ってツリー構造を表示させてみると,
NumericUpDownの子コントロールとしてUpDownButtonsというコントロールが見つかります。
ただ,これをControl.Widthを変更したりMoveWindow APIでサイズ変更してみても,残念ながらサイズは変更されません。

なので,思い切ってNumericUpDown + TrackBarという構成にしてしまってはどうでしょうか。
値はPropertyChangedをトリガとしてバインドすれば値を同期できるので,あまり問題にならないでしょうし。
# なお,ユーザーエクスペリエンスガイドラインにおいてTrackBarはスライダーという名前で書かれています。


> RepeatButtonというコントロールを使って自作しようと思いましたが、現状の環境ではSysytem.Windows.Controls名前空間が参照できず…

System.Windows以下の名前空間のうち,System.Windows.Formsを除く名前空間は,Windows Presentation Foundation (WPF) のものです。
WPFは.NET Framework 3.0からのサポートになり,VS 2005で利用するには,
「Visual Studio 2005 extensions for .NET Framework 3.0 (WCF & WPF)」というものが必要なのですが,
これはCTPで,さらに提供が終了してしまっています。
# 探せば見つかるのですが,MSのサイトではないので記述しません。

バグ

Re:C#のNumericUpDownについて

#4

投稿記事 by バグ » 15年前

>>YuOさん
返信ありがとうございます。


>>スピンコントロールに関して,タッチ操作を行う場合は非推奨とされています。

そうだったのですね…。冷静に考えれば確かにそうですね(^_^;)

以前、MFCで開発していたのですが、その時にはスピンボタンとテキストボックスが別々に存在していて、関連付けて使用していたので、.NETでもそういう方法があるのかなぁ…と思ったんですが…残念です。


>>なので,思い切ってNumericUpDown + TrackBarという構成にしてしまってはどうでしょうか。
値はPropertyChangedをトリガとしてバインドすれば値を同期できるので,あまり問題にならないでしょうし。

すみません、説明不足でした。

値のMAX-MINの範囲がかなり広い(ほぼdecimal型のMAX-MINと同等)なので、スライダーですと微調整が難しくなってしまうんですよ。



どうやら、既存のコントロールをいじってなんとかするのは難しそうですので、自作してみようかと思います。
とりあえず、簡易的なRepeatButtonはできましたので、もう少し頑張ってみます。

一応、解決としておきますが、引き続きアイデアは募集中です。

閉鎖

“C言語何でも質問掲示板” へ戻る