🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

1349閲覧

C# ビンゴ 表 短縮

r_hashimoto_

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

1クリップ

投稿2019/12/20 04:53

C#でビンゴゲームを作っています。
ビンゴの表を表示しておりまして75個分コードを書くと長くなります

bingo_No1.BackColor = Color.White; bingo_No2.BackColor = Color.White; bingo_No3.BackColor = Color.White; bingo_No4.BackColor = Color.White; bingo_No5.BackColor = Color.White; bingo_No6.BackColor = Color.White; bingo_No7.BackColor = Color.White; bingo_No8.BackColor = Color.White; bingo_No9.BackColor = Color.White; bingo_No10.BackColor = Color.White; bingo_No11.BackColor = Color.White; bingo_No12.BackColor = Color.White; bingo_No13.BackColor = Color.White; bingo_No14.BackColor = Color.White; bingo_No15.BackColor = Color.White; bingo_No16.BackColor = Color.White; bingo_No17.BackColor = Color.White; bingo_No18.BackColor = Color.White; bingo_No19.BackColor = Color.White; bingo_No20.BackColor = Color.White; bingo_No21.BackColor = Color.White; bingo_No22.BackColor = Color.White; bingo_No23.BackColor = Color.White; bingo_No24.BackColor = Color.White; bingo_No25.BackColor = Color.White; bingo_No26.BackColor = Color.White; bingo_No27.BackColor = Color.White; bingo_No28.BackColor = Color.White; bingo_No29.BackColor = Color.White; bingo_No30.BackColor = Color.White; bingo_No31.BackColor = Color.White; bingo_No32.BackColor = Color.White; bingo_No33.BackColor = Color.White; bingo_No34.BackColor = Color.White; bingo_No35.BackColor = Color.White; bingo_No35.BackColor = Color.White; bingo_No36.BackColor = Color.White; bingo_No37.BackColor = Color.White; bingo_No38.BackColor = Color.White; bingo_No39.BackColor = Color.White; bingo_No40.BackColor = Color.White; bingo_No41.BackColor = Color.White; bingo_No42.BackColor = Color.White; bingo_No43.BackColor = Color.White; bingo_No44.BackColor = Color.White; bingo_No45.BackColor = Color.White; bingo_No46.BackColor = Color.White; bingo_No47.BackColor = Color.White; bingo_No48.BackColor = Color.White; bingo_No49.BackColor = Color.White; bingo_No50.BackColor = Color.White; bingo_No51.BackColor = Color.White; bingo_No52.BackColor = Color.White; bingo_No53.BackColor = Color.White; bingo_No54.BackColor = Color.White; bingo_No55.BackColor = Color.White; bingo_No56.BackColor = Color.White; bingo_No57.BackColor = Color.White; bingo_No58.BackColor = Color.White; bingo_No59.BackColor = Color.White; bingo_No60.BackColor = Color.White; bingo_No61.BackColor = Color.White; bingo_No62.BackColor = Color.White; bingo_No63.BackColor = Color.White; bingo_No64.BackColor = Color.White; bingo_No65.BackColor = Color.White; bingo_No66.BackColor = Color.White; bingo_No67.BackColor = Color.White; bingo_No68.BackColor = Color.White; bingo_No69.BackColor = Color.White; bingo_No70.BackColor = Color.White; bingo_No71.BackColor = Color.White; bingo_No72.BackColor = Color.White; bingo_No73.BackColor = Color.White; bingo_No74.BackColor = Color.White; bingo_No75.BackColor = Color.White;

コードが長すぎるのでこのコードを短くするにはどうすればいいですか?

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

コントロールをすべてデザイナ上で配置して(Nameプロパティが設定されて)いるのであれば、

cs

1for(int i = 1; i <= 75; i++) 2{ 3 Controls.Find($"bingo_No{i}", true).First().BackColor = Color.White; 4}

と書けます。
もちろん名前が違っていたり数字が飛んでいたりすると、エラーになります。

ループごとに全コントロールを検索するので効率は悪いです。

投稿2019/12/20 06:29

編集2023/07/17 12:53
TN8001

総合スコア9855

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

r_hashimoto_

2019/12/20 06:32

できました!ありがとうございます。
guest

0

とりあえず集合を表すことができる何らかのデータ構造(配列とかListとか…)を使うことを考えてみては.

投稿2019/12/20 04:59

fana

総合スコア11985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

r_hashimoto_

2019/12/20 05:11

回答ありがとうございます。 int[] bingo_date = new int[75]; for(int i = 1;i <= 75; i++) { } こういった形でしょうか? forの処理の中はどうすればよろしいでしょうか?
fana

2019/12/20 05:17

bingo_No1とかが実際には何型なのか知りませんが,その型の配列で扱えばよいのでは. 仮に,bingo_No1とかがControl型として扱えるものだとすれば Control[] Bingo; みたいなので75個のControlへの参照を持てば for( int i=0; i<75; ++i ){ Bingo[i].BackColor = Color.White; } みたく書けるのでは.
fana

2019/12/20 05:21

今目の前にある75個の何かを扱っているプログラムはとりあえず置いておいて,要素が2~3個しかないプログラムでも用意してそちらで原理確認なりしてみれば良いかと.
r_hashimoto_

2019/12/20 05:23

private void bingo_No1_TextChanged(object sender, EventArgs e) { } ↑(フィールド)form1 textbox bingo_No1 です!
fana

2019/12/20 05:29

型がtextboxなのであれば,textbox型の配列とかで管理すれば良いのではないでしょうか. ……とか言われたら何をどうすればよいのかがわかる程度に先に基礎を学んだ方が近道なのではないだろうか?という雰囲気を感じます.
r_hashimoto_

2019/12/20 05:37

textbox型ですか、、 一度参考書を読んでやってみます。
guest

0

配列にしてループさせてはどうですか?
ピンポイントの番号のものを変化させるとしても配列のほうが扱いやすいかと思います。

投稿2019/12/20 04:58

YAmaGNZ

総合スコア10469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

r_hashimoto_

2019/12/20 05:11

回答ありがとうございます。 int[] bingo_date = new int[75]; for(int i = 1;i <= 75; i++) { } こういった形でしょうか? forの処理の中はどうすればよろしいでしょうか?
YAmaGNZ

2019/12/20 05:14

「C# コントロール 配列」で検索してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問