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

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

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

Re[2]: panelについて


(過去ログ 167 を表示中)

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

■96390 / inTopicNo.1)  panelについて
  
□投稿者/ から好し (6回)-(2020/11/19(Thu) 13:51:32)
から好し さんの Web サイト

分類:[.NET 全般] 

開発環境 VS2019
使用言語 C# Windowsフォーム


現在、フォーム上に5枚程度のパネルとそれに対応するボタンがあります。


ボタンA    パネルA
ボタンB    パネルB
ボタンC    パネルC
ボタンD    パネルD
ボタンE    パネルE

ボタンAを押された時パネルAが表示され、ボタンBが押された時パネルBが表示されるという感じです。
今現在は、ボタン毎に同じ処理を繰り返し書いていて非常に無駄が多いとは思うのですが
どうしたら、上手く書けるか分かりません。
例えば、処理内容は同じで違うのはボタンとパネルの名前だけなので,
なんとなくまとめれそうだとは思うのですが・・・・。

if(ボタンの配列[i].Checkd)としてもダメでした。

ちなみ、ボタンを配列にするのはここを参考に作成しました。
https://dobon.net/vb/dotnet/control/buttonarray.html


以上です。
何か良アイディアがありましたら、ご教示ください。





引用返信 編集キー/
■96391 / inTopicNo.2)  Re[1]: panelについて
□投稿者/ 魔界の仮面弁士 (2918回)-(2020/11/19(Thu) 14:23:36)
No96390 (から好し さん) に返信
> ボタンAを押された時パネルAが表示され、ボタンBが押された時パネルBが表示されるという感じです。

// ボタンとパネルの対応表
private Dictionary<object, Panel> panels = new Dictionary<object, Panel>();

// ボタンとパネルの関連付け
private void Form1_Load(object sender, EventArgs e)
{
  panels.Add(button1, panel1);
  panels.Add(button2, panel2);
  panels.Add(button3, panel3);
}


// 下記のイベントハンドラに、全てのボタンの Click イベントを割り当てておく
private void buttons_Click(object sender, EventArgs e)
{
  foreach (var panel in panels.Values)
  {
    panel.Hide();
  }
  panels[sender].Show();
}
引用返信 編集キー/
■96392 / inTopicNo.3)  Re[2]: panelについて
□投稿者/ から好し (7回)-(2020/11/19(Thu) 15:20:26)
から好し さんの Web サイト
No96391 (魔界の仮面弁士 さん) に返信


出来ました!!
ありがとうございます。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -