C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Convert Toint32 について[c#]


(過去ログ 171 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■98658 / inTopicNo.1)  Convert Toint32 について[c#]
  
□投稿者/ 初心のもの (1回)-(2021/12/13(Mon) 14:02:44)

分類:[.NET 全般] 

       
    [c#]


        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (textBox1.Text == null && e.KeyCode == Keys.Enter)
            {
            *   textBox1.Text = hScrollBar1.Value.ToString();  *
                textBox2.Focus();
            }
            else if(e.KeyCode == Keys.Enter)
            {
                hScrollBar1.Value = Convert.ToInt32(textBox1.Text);
                textBox2.Focus();
            }

        }

      textBoxの中に値がないときにEnterを押したら、scrollBarのその時の値をtextBoxに表示させたいのですが
    *をつけているところで処理が止まってしまいます。。

    
    説明不足かもしれませんが、教えてくださる方いましたらお願いします、、

引用返信 編集キー/
■98659 / inTopicNo.2)  Re[1]: Convert Toint32 について[c#]
□投稿者/ Hongliang (1205回)-(2021/12/13(Mon) 14:16:02)
まずステップ実行によるデバッグというのを身につけたほうがいいかと思います。
if (textBox1
の行にブレークポイントを設定します(右クリックメニューからとか、F9キーとか、行頭の薄い色のついている領域をクリックとか)。
それからデバッグ実行を開始し、テキストボックスでキーを入力すると、ブレークポイントを張った行で実行が一時停止します。
そこでステップオーバー(F10キー)・ステップイン(F11キー)などで1行ずつ実行して結果を確認できます。
また「ローカル」ウィンドウなどで現在の変数に格納されている値なども確認できます。

実はTextBox.Textがnullになることはなくて、空の場合は空文字列を返してきます。
ステップ実行で、ifの次にどこが実行されるか確認できるでしょう。
引用返信 編集キー/
■98660 / inTopicNo.3)  Re[2]: Convert Toint32 について[c#]
□投稿者/ 初心のもの (3回)-(2021/12/13(Mon) 14:28:16)
No98659 (Hongliang さん) に返信


> 実はTextBox.Textがnullになることはなくて、空の場合は空文字列を返してきます。
> ステップ実行で、ifの次にどこが実行されるか確認できるでしょう。

 
 まさに言っている通りでした!
 [""]にしたら処理が進みました
 ありがとうございました:)
引用返信 編集キー/
■98661 / inTopicNo.4)  Re[3]: Convert Toint32 について[c#]
□投稿者/ 初心のもの (4回)-(2021/12/13(Mon) 14:29:49)
No98660 (初心のもの さん) に返信
> ■No98659 (Hongliang さん) に返信

解決済み
引用返信 編集キー/
■98662 / inTopicNo.5)  Re[3]: Convert Toint32 について[c#]
□投稿者/ Azulean (1211回)-(2021/12/13(Mon) 17:33:15)
No98660 (初心のもの さん) に返信
>  まさに言っている通りでした!
>  [""]にしたら処理が進みました


null を返すようなケースも混在してくるようなら、string.IsNullOrEmpty や string.IsNullOrWhiteSpace で比較するコードに倒すのも一手かもしれません。
少し長くなりますが、このメソッドを使う用に一本化していれば、「空」のパターンに悩まされることは減るので。

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.isnullorempty?view=net-6.0
https://docs.microsoft.com/ja-jp/dotnet/api/system.string.isnullorwhitespace?view=net-6.0


ちなみに、TextBox1.Text が半角スペースだった場合、例外が出そうです。
このため、今回のようなケースでは int.TryPrase を使った方が安全かと思います。

int value;
if (!int.TryParse(textBox1.Text, out value))
{
  // 数値解釈できなかったとき
}

解決済み
引用返信 編集キー/
■98753 / inTopicNo.6)  Re[4]: Convert Toint32 について[c#]
□投稿者/ 初心のもの (7回)-(2021/12/21(Tue) 12:52:15)
No98662 (Azulean さん) に返信


  丁寧に教えていただき有井が等ございます!

  使っていこうと思います!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -