none
プログレスバーの値 RRS feed

  • 質問

  • プログレスバーの値をテキストボックスに入力されたものにする場合はどうすればいいのでしょうか。わかる方、お願いします。コードを書いていただけるとうれしいです。どうも「データ型」がいまいちわからなくて・・・。(必死に勉強していますが)よろしくお願いします。
    2007年4月8日 11:57

すべての返信

  •  MMSGT さんからの引用
    プログレスバーの値をテキストボックスに入力されたものにする場合はどうすればいいのでしょうか。わかる方、お願いします。コードを書いていただけるとうれしいです。どうも「データ型」がいまいちわからなくて・・・。(必死に勉強していますが)よろしくお願いします。

    TextBox に入った値は Text プロパティであり、リファレンスで見るとわかるように System.String (string) 型です。
    一方、ProgressBar の Value プロパティは、System.Int32 (int) 型です。

    質問内容から察するに、型変換というものを知れば解決できるのだと思います。
    よって、ヒントだけ書いておきます。

    とりあえず、string から int に型変換する方法として、int.Parse メソッドというものがあります。
    これを調べてみてください。

    これが理解できたら、TryParse メソッドも調べておくと良いでしょう。
    2007年4月8日 12:15
  • お返事ありがとうございます。

    教えていただいたように調べてみてtext.boxに入力された値ならできるようになりました。しかし、それをラベルのテキストにするとできません。なぜでしょうか?教えてください。また、そのコードも書いていただけるとうれしいです。

    2007年4月8日 13:41
  •  MMSGT さんからの引用
    ラベルのテキストにするとできません
    できませんとはどういう意味ですか。例外が発生したとか、プログレスバーの値が 0 になってしまうとか?

    MMSGT さんが実際に書いたコードをのせてもらえると指摘できると思います。

    2007年4月8日 13:56
  • コードは、

    textBox1.Text = label1.Text;
                double xint;
                int num1 = int.Parse(label1.Text);
                double num2;
                num2 = Convert.ToDouble(label1.Text);
                double xdouble = 75;
                xint = (int)xdouble;     

             progressBar1.Value = num1;

    です。ビルドは正常に終了するんですけれど、ボタンをクリックすると「FormatExceptionはハンドルされませんでした。」となります。どうすればいいのでしょうか。

    2007年4月9日 0:01
  •  MMSGT さんからの引用
    ビルドは正常に終了するんですけれど、ボタンをクリックすると「FormatExceptionはハンドルされませんでした。」となります。どうすればいいのでしょうか。
    例外が発生しているのですね。

    では、どこで例外が発生しているのか特定してみましょう。

    そのために、デバッグという作業をします。自分で怪しそうなコードにブレークポイントを設定してプログラムを実行すると、ブレークポイントを設定した場所でプログラムを停止させることが出来ます。あとはステップインで一行ずつ実行したり、変数の値を確認しておかしなところがないか確かめてください。

     

    例外が発生した原因は、おそらく label1 の Text プロパティの値に数字以外の文字列が紛れ込んでいるのだと思います。

    なぜそう思ったかというと、Int32.Parse メソッドのドキュメントにそう明記されているからです。

     

    調べたいことが合ったら、MSDN を見るなり検索するなりすると、一発で解決できることもありますので、ぜひ見てみてください。

    2007年4月9日 3:52
  • 諸農です。

     

     MMSGT さんからの引用

              int num1 = int.Parse(label1.Text);
               progressBar1.Value = num1;

    コードを単純化してみれば、ラベルに表示されている文字列をプログレスバーにセットしたいので数値変換したい、のように見えますが。

     MMSGT さんからの引用

    です。ビルドは正常に終了するんですけれど、ボタンをクリックすると「FormatExceptionはハンドルされませんでした。」となります。どうすればいいのでしょうか。

    とのことですが、じゃんぬねっとさんが先の投稿で助言されているTryParseメソッドは使わないのですか?

     

     

    2007年4月14日 16:39
  • その前に、データ型の理解が先だと思います。
    最新の投稿を見ると FormatException 云々を理解していない (調べていない) ため、
    最初の投稿にある "データ型" というのが理解できていない段階から抜けられていません。

    TryParse メソッドより先にやるべきことがある段階だと思います。
    (だから、最初の投稿でも "これが理解できたら" と書きました)

    "FormatException" を検索エンジンで調べるだけでも、いろんな意味で変わるのではないでしょうか。

    # こんなことは、偉そうに書くほどの問題だと私も思えないのですが、老婆心だと思って頂ければ幸いです。
    2007年4月15日 3:05