質問者
プログレスバーの値

質問
すべての返信
-
MMSGT さんからの引用 プログレスバーの値をテキストボックスに入力されたものにする場合はどうすればいいのでしょうか。わかる方、お願いします。コードを書いていただけるとうれしいです。どうも「データ型」がいまいちわからなくて・・・。(必死に勉強していますが)よろしくお願いします。
TextBox に入った値は Text プロパティであり、リファレンスで見るとわかるように System.String (string) 型です。
一方、ProgressBar の Value プロパティは、System.Int32 (int) 型です。
質問内容から察するに、型変換というものを知れば解決できるのだと思います。
よって、ヒントだけ書いておきます。
とりあえず、string から int に型変換する方法として、int.Parse メソッドというものがあります。
これを調べてみてください。
これが理解できたら、TryParse メソッドも調べておくと良いでしょう。 -
コードは、
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はハンドルされませんでした。」となります。どうすればいいのでしょうか。
-
MMSGT さんからの引用 ビルドは正常に終了するんですけれど、ボタンをクリックすると「FormatExceptionはハンドルされませんでした。」となります。どうすればいいのでしょうか。 では、どこで例外が発生しているのか特定してみましょう。
そのために、デバッグという作業をします。自分で怪しそうなコードにブレークポイントを設定してプログラムを実行すると、ブレークポイントを設定した場所でプログラムを停止させることが出来ます。あとはステップインで一行ずつ実行したり、変数の値を確認しておかしなところがないか確かめてください。
例外が発生した原因は、おそらく label1 の Text プロパティの値に数字以外の文字列が紛れ込んでいるのだと思います。
なぜそう思ったかというと、Int32.Parse メソッドのドキュメントにそう明記されているからです。
調べたいことが合ったら、MSDN を見るなり検索するなりすると、一発で解決できることもありますので、ぜひ見てみてください。
-
諸農です。
MMSGT さんからの引用 int num1 = int.Parse(label1.Text);
progressBar1.Value = num1;コードを単純化してみれば、ラベルに表示されている文字列をプログレスバーにセットしたいので数値変換したい、のように見えますが。
MMSGT さんからの引用 です。ビルドは正常に終了するんですけれど、ボタンをクリックすると「FormatExceptionはハンドルされませんでした。」となります。どうすればいいのでしょうか。
とのことですが、じゃんぬねっとさんが先の投稿で助言されているTryParseメソッドは使わないのですか?
-
その前に、データ型の理解が先だと思います。
最新の投稿を見ると FormatException 云々を理解していない (調べていない) ため、
最初の投稿にある "データ型" というのが理解できていない段階から抜けられていません。
TryParse メソッドより先にやるべきことがある段階だと思います。
(だから、最初の投稿でも "これが理解できたら" と書きました)
"FormatException" を検索エンジンで調べるだけでも、いろんな意味で変わるのではないでしょうか。
# こんなことは、偉そうに書くほどの問題だと私も思えないのですが、老婆心だと思って頂ければ幸いです。