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

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

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

Re[3]: for文での変数操作について


(過去ログ 42 を表示中)

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

■21982 / inTopicNo.1)  for文での変数操作について
  
□投稿者/ 林檎 (3回)-(2008/07/14(Mon) 15:57:36)

分類:[C#] 

先日はお世話になりました。
また煮詰まってしまいましたので、どうかお知恵を貸していただければと思います。

Form1に10個の変数 M1,M2,...M10 と 1個の変数int MNo が定義してあります。
Form2にbutton1と 10個のテキストボックス textBox1, textBox2, ... textBox10
が実装してあり、

Form1の MNo=1のとき Form2のbutton1を押すとtextBox1にM1の値が表示
Form1の MNo=2のとき Form2のbutton1を押すとtextBox1にM1の値が、textBox2にM2の値が表示

という動作を実現したいと思っています。
イメージとしては、Form2のbutton1で

private void button1_Click(object sender, EventArgs e)
{
int a = Form1.MNo;
for (i = 1; i <= a; i++)
{
(textBox + i.Tostring()).Text = Form1.(M + i.Tostring()).Tostring();
}
}


のように書けばいいかな、と思ったのですがどうもうまくいきません。

どうかアドバイスよろしくお願いいたします。

引用返信 編集キー/
■21983 / inTopicNo.2)  Re[1]: for文での変数操作について
□投稿者/ 鶏唐揚 (241回)-(2008/07/14(Mon) 16:05:17)
変数名からその変数の中身を取得する方法は探せばあるとは思いますが、
それよりもM配列にしたほうがラクだと思うのは私だけでしょうか^^;

M1,M2...M10としなければならない理由があるなら別ですが。
引用返信 編集キー/
■21984 / inTopicNo.3)  Re[2]: for文での変数操作について
□投稿者/ ロック (47回)-(2008/07/14(Mon) 16:10:40)
↓これですか?
http://bbs.wankuma.com/index.cgi?mode=al2&namber=21430

需要あるねw
引用返信 編集キー/
■21986 / inTopicNo.4)  Re[3]: for文での変数操作について
□投稿者/ 鶏唐揚 (242回)-(2008/07/14(Mon) 16:20:38)
No21984 (ロック さん) に返信
> ↓これですか?
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=21430
>
> 需要あるねw
上記リンクはコントロールについてのことなので、
リストに入れるとか同コントロールの配列変数を作るとか
コントロール名からコントロールそのものを引き当てるという
方法が紹介されてますし、コントロール配列というのは需要あると思います。

が、今回は変数についてなので、上記リンクのうち
>同コントロールの配列変数を作るとか
の方法を取ると、そのまま配列変数に取って代わるだけの話になるので
配列変数を薦めています。

#何度もいいますが、M1,M2...M10という名前付けでなくてはならない・配列であってはいけない等理由があれば別です。
引用返信 編集キー/
■21987 / inTopicNo.5)  Re[4]: for文での変数操作について
□投稿者/ Azulean (165回)-(2008/07/14(Mon) 16:23:54)
for文内の左辺はコントロールだと思う。
なので、100%使えないわけではないけれど、右辺とセットで考えると配列にしたくなりますね。
引用返信 編集キー/
■21988 / inTopicNo.6)  Re[5]: for文での変数操作について
□投稿者/ 鶏唐揚 (243回)-(2008/07/14(Mon) 16:39:22)
2008/07/14(Mon) 16:41:47 編集(投稿者)
No21987 (Azulean さん) に返信
> for文内の左辺はコントロールだと思う。
> なので、100%使えないわけではないけれど、右辺とセットで考えると配列にしたくなりますね。
ですね。以下サンプル。宣言とかコントロール配列の初期化とかは適宜行ってください。

private void button1_Click(object sender, EventArgs e)
{
    int a = Form1.MNo;
    for (i = 0; i < a; i++)
    {
        textBoxArray[i].Text = M[i].Tostring();
    }
}


↓こー言う使い方は大丈夫なのかな。未確認。

private void button1_Click(object sender, EventArgs e)
{
    int a = Form1.MNo;
    for (i = 1; i <= a; i++)
    {
        this.Controls["textBox" + i.ToString()].Text = M[i-1].Tostring();
    }
}

でもコントロール名違ったりしたら
例外発生するので個人的にはあまりやりたくない方法w

引用返信 編集キー/
■21990 / inTopicNo.7)  Re[6]: for文での変数操作について
□投稿者/ ロック (48回)-(2008/07/14(Mon) 17:00:23)
> Form1に10個の変数 M1,M2,...M10 と 1個の変数int MNo が定義してあります。
確かに「 Form1.(M + i.Tostring()).Tostring();」この部分でひっかかりますね orz

なにより、2パターン見せられると、見た瞬間に処理内容のイメージがわかるのは
前者だと思います。
#VC++歴の方が長いせいかもしれませんが

というわけで、自分も配列を推します
引用返信 編集キー/
■22005 / inTopicNo.8)  Re[1]: for文での変数操作について
□投稿者/ Jitta (493回)-(2008/07/14(Mon) 22:55:26)
Jitta さんの Web サイト
No21982 (林檎 さん) に返信
> 先日はお世話になりました。
> また煮詰まってしまいましたので、どうかお知恵を貸していただければと思います。

「煮詰まった」のなら、聞く必要ないやん:p
http://dic.yahoo.co.jp/dsearch?p=%E7%85%AE%E8%A9%B0%E3%81%BE%E3%82%8B&enc=UTF-8&stype=0&dtype=0&dname=0ss

引用返信 編集キー/
■22008 / inTopicNo.9)  Re[2]: for文での変数操作について
□投稿者/ RUN (3回)-(2008/07/15(Tue) 01:51:14)
配列以外の方法で比較的素直にやるなら、Case文を利用するかな〜?メンテ面倒だと言う話もあるけど。
また、似たような処理が多数有るなら、コントロールを返す関数を作って見るとか、

VBコードだけどこんな感じ
Private Function getTextbox(byval value as integer) as TextBox
    dim target as TextBox
    
    select value 
        case 1
            target = Textbox1
        case 2
            target = Textbox2
           ・
           ・
           ・
        case else
            target = Nothing
    End Select

    return target
End Function

※ケースに外れる時のチェックとか抜いて書いてるんで、実際の実装の場合はそこもしっかり考える事
※このサンプルの場合、かなり暴力的にNothingで誤魔化してるだけなので^^;

まぁ、コントロール配列使った方が本当は楽なんだけど(例外処理とか例外処理とか…)
規約で(コントロール配列が)禁止されてる時も多いからな〜

引用返信 編集キー/
■22017 / inTopicNo.10)  Re[3]: for文での変数操作について
□投稿者/ 林檎 (4回)-(2008/07/15(Tue) 09:18:45)
みなさま、本当にありがとうございます!
配列を使ってなんとかなりそうな所まで来れました。
配列って頭がこんがらがりそうですが、がんばってみます。
p.s. 日本語まちがってましたね。。 日本語ももっと勉強します。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -