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

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

詳細はこちら
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

1090閲覧

複数のButtonなどの共通部分をまとめて宣言したい

yurusitre4

総合スコア5

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

1グッド

0クリップ

投稿2019/12/10 05:34

編集2019/12/10 05:42

前提・実現したいこと

C#のコーディングで、Buttonやtextなどの共通部分の宣言を一括したい
例えば、3つのボタン(btnStart,btnNext,btnClose)のサイズを一括(buttons)で宣言したい

該当のソースコード

C#

1------------------ 2//ボタンの宣言 3Button btnStart = new Button(); 4btnStart.text = "スタート"; 5btnStart.Location = new Point(10,10); 6Controls.Add(btnStart); 7 8Button btnNext = new Button(); 9btnNext.text = "次へ"; 10btnNext.Location = new Point(50,50); 11Controls.Add(btnNext); 12 13Button btnClose = new Button(); 14btnClose.Text = "閉じる"; 15btnClose.Location = new Point(100,10); 16Contorls.Add(btnClose); 17 18// 19//この部分でbtn*のサイズをまとめて宣言したい 20// 21Button buttons = new Button(); 22buttons.Size = new Size(100,20); 23Controls.Add(buttons); 24
TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

各ボタンは配列等で管理せず名前を付けておきたいってことなんだと解釈し、3パターン考えましたがどれもパッとしませんね。

案1 一時的に配列に入れてforeach

cs

1Button btnStart = new Button(); 2btnStart.Text = "スタート"; 3btnStart.Location = new Point(10, 10); 4 5Button btnNext = new Button(); 6btnNext.Text = "次へ"; 7btnNext.Location = new Point(50, 50); 8 9Button btnClose = new Button(); 10btnClose.Text = "閉じる"; 11btnClose.Location = new Point(100, 10); 12 13Button[] buttons = { btnStart, btnNext, btnClose }; 14foreach(Button b in buttons) 15{ 16 b.Size = new Size(100, 20); 17 Controls.Add(b); 18}

案2 Controlsから探してforeach

cs

1Button btnStart = new Button(); 2btnStart.Text = "スタート"; 3btnStart.Location = new Point(10, 10); 4Controls.Add(btnStart); 5 6Button btnNext = new Button(); 7btnNext.Text = "次へ"; 8btnNext.Location = new Point(50, 50); 9Controls.Add(btnNext); 10 11Button btnClose = new Button(); 12btnClose.Text = "閉じる"; 13btnClose.Location = new Point(100, 10); 14Controls.Add(btnClose); 15 16foreach(Button b in Controls.OfType<Button>()) 17{ 18 b.Size = new Size(100, 20); 19}

案3 継承

cs

1Button btnStart = new MyButton("スタート", new Point(10, 10)); 2Controls.Add(btnStart); 3 4Button btnNext = new MyButton("次へ", new Point(50, 50)); 5Controls.Add(btnNext); 6 7Button btnClose = new MyButton("閉じる", new Point(100, 10)); 8Controls.Add(btnClose); 9 10 11class MyButton : Button 12{ 13 public MyButton(string text, Point location) 14 { 15 Text = text; 16 Location = location; 17 Size = new Size(100, 20); 18 } 19}

投稿2019/12/10 09:17

編集2023/08/09 10:42
TN8001

総合スコア9855

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

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

yurusitre4

2019/12/10 09:40

ご丁寧に回答して頂きありがとうございました 共通部分が一目でわかるようなソースコードを書きたかったので、案1 一時的に配列に入れてforeachのやり方を参考にして書いてみます。 また質問する機会があればよろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問