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

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

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

Re[6]: 値を順番に表示させる。


(過去ログ 51 を表示中)

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

■28427 / inTopicNo.1)  値を順番に表示させる。
  
□投稿者/ vb初心者 (1回)-(2008/11/26(Wed) 10:21:09)

分類:[VB.NET/VB2005 以降] 

お世話になります。
現在vb2005勉強中
質問ですが、下のコードの実行結果は"あ"と表示されます、これを
ボタンを押すたびに順番に表示させたいのですがどのようにすればできるでしょうか?
処理の流れはわかっているのでfor文を使ってみたんですがうまくいきませんでした。
初歩的な質問ですがご教授よろしくお願いします。

テキストボックス 1個 ボタン 1個

Dim b As Integer
Dim a(9) As String
a(0) = "あ"
a(1) = "い"
a(2) = "う"
a(3) = "え"
a(4) = "お"
a(5) = "か"
a(6) = "き"
a(7) = "く"
a(8) = "け"
a(9) = "こ"
If b = 9 Then
TextBox1.Text = a(b)
Else
TextBox1.Text = a(b)
b = b + 1
End If
End Sub
引用返信 編集キー/
■28435 / inTopicNo.2)  Re[1]: 値を順番に表示させる。
□投稿者/ やじゅ (798回)-(2008/11/26(Wed) 11:31:52)
やじゅ さんの Web サイト
No28427 (vb初心者 さん) に返信

変数の適用範囲がまだ理解されていないと思われます。
ここを理解すれば、すぐ答えが出るよん。

変数の適用範囲(スコープ)
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard8.htm
引用返信 編集キー/
■28436 / inTopicNo.3)  Re[1]: 値を順番に表示させる。
□投稿者/ 兎 (1回)-(2008/11/26(Wed) 11:32:50)
安直な解決法は b を、static or クラスのメンバ変数 にするなど、なのかな。
前後が無いので質問のコードが1つのメソッドにまるっと書いてあると仮定して。
引用返信 編集キー/
■28439 / inTopicNo.4)  Re[2]: 値を順番に表示させる。
□投稿者/ vb初心者 (2回)-(2008/11/26(Wed) 11:45:08)
なるほど寿命ですね
これを使用しれば、処理が終了しても、変数の値は初期化されないということですね?
勉強になりました。
メソッド、クラスのあたりをまだ理解していないのでそちらの勉強をしていきたいと思います。
解決いたしましたのでチェックをいれます。
修正したコードは一部ですが、
Dim b As Integer
static b as Integer
です。
ご回答していただきありがとうございました。
解決済み
引用返信 編集キー/
■28440 / inTopicNo.5)  Re[1]: 値を順番に表示させる。
□投稿者/ .SHO (180回)-(2008/11/26(Wed) 11:45:24)
2008/11/26(Wed) 11:50:33 編集(投稿者)
No28427 (vb初心者 さん) に返信

脱線しますが…
(質問の答えとしては b を statis でいいと思います)

>         If b = 9 Then
>             TextBox1.Text = a(b)
>         Else
>             TextBox1.Text = a(b)
>             b = b + 1
>         End If

の部分は TextBox1.Text = a(b) が2つあるのは無駄なので If の外に出し

TextBox1.Text = a(b)
If b = 9 Then
Else
  b = b + 1
End If

とすると、b = 9 の処理が空になるので

TextBox1.Text = a(b)
If b != 9 Then
  b = b + 1
End If

でいいと思います。

(VBって != でいいの?^^;)

引用返信 編集キー/
■28441 / inTopicNo.6)  Re[1]: 値を順番に表示させる。
□投稿者/ 裕猫 (96回)-(2008/11/26(Wed) 11:45:52)
No28427 (vb初心者 さん) に返信
> お世話になります。
> 現在vb2005勉強中
> 質問ですが、下のコードの実行結果は"あ"と表示されます、これを
> ボタンを押すたびに順番に表示させたいのですがどのようにすればできるでしょうか?
> 処理の流れはわかっているのでfor文を使ってみたんですがうまくいきませんでした。
> 初歩的な質問ですがご教授よろしくお願いします。
>
> テキストボックス 1個 ボタン 1個
>
> Dim b As Integer
> Dim a(9) As String
> a(0) = "あ"
> a(1) = "い"
> a(2) = "う"
> a(3) = "え"
> a(4) = "お"
> a(5) = "か"
> a(6) = "き"
> a(7) = "く"
> a(8) = "け"
> a(9) = "こ"
> If b = 9 Then
> TextBox1.Text = a(b)
> Else
> TextBox1.Text = a(b)
> b = b + 1
> End If
> End Sub

end sub があるところを見るとこれはサブルーチンの内容かな?
この状態ならb=0で設定されているのでa(0) = "あ"が表示されます。
ボタンを押すたびに表示を変えたいのなら、
> Dim b As Integer
> Dim a(9) As String
> a(0) = "あ"
> a(1) = "い"
> a(2) = "う"
> a(3) = "え"
> a(4) = "お"
> a(5) = "か"
> a(6) = "き"
> a(7) = "く"
> a(8) = "け"
> a(9) = "こ"
をメインルーチンにして、ボタンを押したサブルーチンに
b = b + 1
TextBox1.Text = a(b)
と指定してやれば出来るはずですが。
引用返信 編集キー/
■28443 / inTopicNo.7)  Re[3]: 値を順番に表示させる。
□投稿者/ vb初心者 (3回)-(2008/11/26(Wed) 11:59:20)
SHO様

なるほど、スマートになりますね。
まだ作成途中なので修正はしていくつもりですが、参考にさせていただきます。

裕猫様

>をメインルーチンにして、ボタンを押したサブルーチンに
>b = b + 1
>TextBox1.Text = a(b)
>と指定してやれば出来るはずですが。

勉強不足で理解できないところもありますが、宣言?場所を変えればいいというわけでしょうか?
メインで繰り返し、ボタンを押したときにサブで繰り返す?

解決済み
引用返信 編集キー/
■28463 / inTopicNo.8)  Re[4]: 値を順番に表示させる。
□投稿者/ 裕猫 (97回)-(2008/11/26(Wed) 14:50:49)
> 勉強不足で理解できないところもありますが、宣言?場所を変えればいいというわけでしょうか?
> メインで繰り返し、ボタンを押したときにサブで繰り返す?
メインはボタンが押されるのを待つループで、ボタンが押されたのを感知したらボタンが押された処理をサブで実行し、メインのループに戻る。
という動作がイベントドリブン型のプログラムの仕方です。
宣言ですが、変数はメインとサブプロシージャ両方で使用できるタイプと、サブプロシージャの中でしか参照できないものがあるので注意が必要です。
bはメインとサブで両方で使用できるタイプでなければならないので、その辺を気をつければ大丈夫でしょう。
引用返信 編集キー/
■28464 / inTopicNo.9)  Re[5]: 値を順番に表示させる。
□投稿者/ 裕猫 (98回)-(2008/11/26(Wed) 14:51:42)
すみません解決済みはずれたので付けときます。
解決済み
引用返信 編集キー/
■28492 / inTopicNo.10)  Re[6]: 値を順番に表示させる。
□投稿者/ まんごーぷりん (51回)-(2008/11/27(Thu) 01:31:16)
まんごーぷりん さんの Web サイト
フィールド変数にとるのが一般的ですが、以下なら 1 メソッド内で解決できますね。

Dim b As Integer
Dim a As String = "あいうえおかきくけこ"
Dim i As Integer = -1;
For i = 0 To 9
 If (a(i).ToString() = Text1.Text) Then Exit For
Next
If i < 9 Then b = i + 1
TextBox1.Text = a(b).ToString();

#VB 難しいです。動くかわからないです。

Text1 に密接に絡むなら、専用のクラスを作って Tag に突っ込んでしまうのも楽しいかもしれない。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -