none
カウンターアプリを作りたい RRS feed

  • 質問

  •  

    ボタンを1回クリックするごとに数字が1ずつ上がっていくアプリを作りたいですが

    (カウンターみたいなもの)

    ~Buttun1 Click ~~

       Dim suji As Integer

           suji = 0

           suji =Label1.Text  + 1

           Label1.Text  = suji

    上のプログラムで何回かクリックしてもLabel1に 1 しか表示されないです

    何かいい方法を教えていただきたい

    ちなみに私はまるっきりの初心者で、プログラム初めて1週間です

    よろしくおねがいします
    2008年10月24日 3:55

回答

  • 外池と申します。

     

    さて、まず、注意点ですが、プログラムの中で「値」はいくつもの種類があります。

    例えば、「加減乗除のできる数字」と「文字列」です。

    Integerのsujiは「数字」になります。計算はできますが、アルファベットや漢字などの「文字」は扱えません。

    しかし、Label1.Textは「文字列」で、任意の文字が扱えます。しかし、「計算」はできません。

    普通、このように違うもの同士は、=で代入したり、+で直接足し算したりできません。

     

    足し算は、「数字」にそろえて計算しましょう。

    suji = CInt(Label1.Text) + 1

    Cintは、「文字列」をIntegerの「数字」に変換してくれます。そうすれば、+を使って1を足し算できます。

     

    つぎに、文字列に変換するには、

    Label1.Text = suji.ToString

    というようにやります。

     

    ちなみに、「加減乗除のできる数字」には、Integer以外にもさらにいろいろ種類があります。Byte、Short、Long。これらは整数です。あと、SingleやDoubleのように小数点数(正確には浮動小数点数)もあります。
    2008年10月24日 4:22
  • Label1の初期表示は1でしょうか? もしそうであればButton1のClickイベントハンドラが実行されていない可能性もあります。

    ブレークポイントを設定してデバッグはできますか?

    2008年10月24日 13:55
    モデレータ
  • ふと思ったのですが、作成しているのがASP.NET(ウェブページ)だったりしないですか?

    拡張子が「aspx」で「F5」を押すとインターネットエクスプローラが立ち上がったり・・・・。

    その場合は、ポストバックを調べてみると良いかもしれません。

     

    ASP.NETじゃなく普通のWindowsフォームの場合は気にしないでください(-_-Wink

    忘れてください。。。ここはVBExpressですもんね(泣

    2008年10月27日 12:53
  •  窓際族 さんからの引用

    だと、永遠に1ですよ。いつもスタートは0ですから。

    それはコードからは分かりません。

     

    コードではsuji変数に0を代入していますが、その次の行で使わずに捨てているので、「スタートは0」とは断定できません。

     

     trapemiya さんからの引用

    Label1.Textはたぶん空白なんじゃないかと思います。VBだと適当にキャストしてしまいますので。いや、C#もですが。

    だとしても、Label1.Textに代入しているので、ボタンのイベントが生きていると1が続くとは考えにくいような気がします。

    イベントが動作していない説が有力かなと思っています。

    2008年10月29日 15:20
    モデレータ

すべての返信

  • 外池と申します。

     

    さて、まず、注意点ですが、プログラムの中で「値」はいくつもの種類があります。

    例えば、「加減乗除のできる数字」と「文字列」です。

    Integerのsujiは「数字」になります。計算はできますが、アルファベットや漢字などの「文字」は扱えません。

    しかし、Label1.Textは「文字列」で、任意の文字が扱えます。しかし、「計算」はできません。

    普通、このように違うもの同士は、=で代入したり、+で直接足し算したりできません。

     

    足し算は、「数字」にそろえて計算しましょう。

    suji = CInt(Label1.Text) + 1

    Cintは、「文字列」をIntegerの「数字」に変換してくれます。そうすれば、+を使って1を足し算できます。

     

    つぎに、文字列に変換するには、

    Label1.Text = suji.ToString

    というようにやります。

     

    ちなみに、「加減乗除のできる数字」には、Integer以外にもさらにいろいろ種類があります。Byte、Short、Long。これらは整数です。あと、SingleやDoubleのように小数点数(正確には浮動小数点数)もあります。
    2008年10月24日 4:22
  • Label1の初期表示は1でしょうか? もしそうであればButton1のClickイベントハンドラが実行されていない可能性もあります。

    ブレークポイントを設定してデバッグはできますか?

    2008年10月24日 13:55
    モデレータ
  • ふと思ったのですが、作成しているのがASP.NET(ウェブページ)だったりしないですか?

    拡張子が「aspx」で「F5」を押すとインターネットエクスプローラが立ち上がったり・・・・。

    その場合は、ポストバックを調べてみると良いかもしれません。

     

    ASP.NETじゃなく普通のWindowsフォームの場合は気にしないでください(-_-Wink

    忘れてください。。。ここはVBExpressですもんね(泣

    2008年10月27日 12:53
  • Buttun1_Click(~)

       Dim suji As Integer

           suji = 0

           suji =Label1.Text  + 1

           Label1.Text  = suji

    end sub

     

    だと、永遠に1ですよ。いつもスタートは0ですから。

    それに、label1.textが数字かわからないし。

     

    2008年10月29日 13:17
  • いや、むしろsuji = 0は全く意味がありません。Label1.Textはたぶん空白なんじゃないかと思います。VBだと適当にキャストしてしまいますので。いや、C#もですが。

    2008年10月29日 15:02
    モデレータ
  •  窓際族 さんからの引用

    だと、永遠に1ですよ。いつもスタートは0ですから。

    それはコードからは分かりません。

     

    コードではsuji変数に0を代入していますが、その次の行で使わずに捨てているので、「スタートは0」とは断定できません。

     

     trapemiya さんからの引用

    Label1.Textはたぶん空白なんじゃないかと思います。VBだと適当にキャストしてしまいますので。いや、C#もですが。

    だとしても、Label1.Textに代入しているので、ボタンのイベントが生きていると1が続くとは考えにくいような気がします。

    イベントが動作していない説が有力かなと思っています。

    2008年10月29日 15:20
    モデレータ
  •  Azulean さんからの引用

     だとしても、Label1.Textに代入しているので、ボタンのイベントが生きていると1が続くとは考えにくいような気がします。

    イベントが動作していない説が有力かなと思っています。


    おっと、確かにその通りですね。そもそもイベントが動作していれば、ラベルの数字はカウントアップされていくコードで誤りはないので(suji=0は余計ですが)、ラベルの初期値は1でイベントが生きていないのと考えるのが一番当てはまりますね。

    2008年10月29日 16:14
    モデレータ
  • こんにちは。中川俊輔 です。

     

    皆様、回答ありがとうございます。

     

    しゃんはいさん、初めまして!フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    勝手ながら、有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、ぜひ投稿してみてください!

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年11月12日 9:36