【VB.NET】VB.NETのNumericUpDownコントロールのような形式で、コントロールの中に表示されている文字列の中の数値をボタンを押すことで上下させたいと考えています。

ただし、コントロールの中に表示させる文字列は、単位を付けた状態にしたいです。(例:Kg、とか、pound、とか。)
単位をコントロールの外に出すという意見もあると思いますが、今回はコントロールの中に一緒に表示させる方法でやりたいのです。
いい方法はないでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/04/21 11:57:48
  • 終了:2010/04/27 22:28:41

回答(1件)

id:australiagc No.1

australiagc回答回数467ベストアンサー獲得回数902010/04/21 12:45:30

ポイント60pt

CodeProjectのこのサンプルを使ってみてはいかがですか?

NumericUpDownをエクステンドして作ったカスタムコントロールです。

http://www.codeproject.com/KB/vb/UpDownEx_with_measure.aspx


これだと、「Factor」プロパティがある一定値を超えると順々に単位が変わっていく(例: g->kg->T)なんてのもできますし。


ソースを見ながら自分でカスタマイズしても良いですが、そのままプロジェクトに追加するかDLLにして追加しちゃって良いと思いますよ。

ちなみに、CodeProjectをまだ利用されていないのであれば、無料登録してからのダウンロードになります↓

http://www.codeproject.com/script/Membership/Modify.aspx

他にもたくさんの有益なソースがあるので、登録しておいて損は無いですよ。

id:tail_furry

ありがとうございます。

CodeProjectのページを見てみたのですが、例ですとg→Kg→Tという単位の変化はできそうですが、g以外にlt.(ポンド)を入れるようなことはできなさそうに見えます。

やはりカスタマイズしないとダメでしょうか・・・

ただ、CodeProjectのページ自体は有用そうでしたので今後利用させていただきたいと思います。

2010/04/22 20:07:54
  • id:australiagc
    なるほど、確かに単位を別のものに変更することはできないでしょうね、このカスタムコントロールだと。
    いずれにせよ、単位を変更するにはそれを指示するコントロールが(ラジオボタンでもドロップダウンリストでも良いですが)別途必要となると思います。
    幸い、「MeasureUnits」のオブジェクトタイプはString[]なので、
    単位変更を指示するコントロールのイベント内で「MeasureUnits」を別の物に変更するよう、
    更にカスタマイズを加えてみてはいかがでしょう?

    例えば、
    switch(【ラジオボタンの数値】) {

    case 【グラムを選択した場合の数値】: upDownEx.MeasureUnits = {"g","kg","t"};
    break;

    case 【ポンドを選択した場合の数値】: upDownEx.MeasureUnits = {"lb"};
    break;
    }
    といった感じのコードで。(Cっぽい擬似コードもどきですみません・・・VBよりC#派なもんで・・・)
  • id:tail_furry
    australiagcさん、コメントありがとうございます。
    ボクはC#よりVB派なのですが、いただいたヒントを元に時間のある時にカスタマイズにチャレンジしてみたいと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません