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

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

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

Re[2]: クリックされたボタンNameを取得し、似たNameのラベルを


(過去ログ 92 を表示中)

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

■54757 / inTopicNo.1)  クリックされたボタンNameを取得し、似たNameのラベルを
  
□投稿者/ きしり (1回)-(2010/11/01(Mon) 15:17:30)

分類:[C#] 

2010/11/01(Mon) 15:46:00 編集(投稿者)

C#2010にてプログラミングしています。
100個ほどのボタンと、それ同数のラベルが貼り付けてあります。

このような状況で例えば、
あるボタン「btnBanana」をクリックした際に、
対応するラベル「lblBanana」の文字列を変化させたいです。

ここで質問です。

ひとつひとつのボタンのクリックイベントに個別のコードを書くのは大変手間で、
また、後の変更時にも多くの時間を要してしまいます。
同じコードで済ますことはできないでしょうか?


具体的に思いついたイメージとしては、

1.TextBox cTextBox = (sender as TextBox);
  cTextBox.Name にてクリックされたボタン名を取得
  (例)btnBanana

2.文字列「btnXXX」の「btn」を「lbl」に置換してラベル名生成
  (例)btnBanana→lblBanana

3.生成した文字列を用いて、その.Textの内容を変更
  (例)lblBanana.Text = btnBanana.Text;

といったものです。

とにかくできるだけシンプルなコードにしたいと考えています。
よろしくお願いいたします。
引用返信 編集キー/
■54760 / inTopicNo.2)  Re[1]: クリックされたボタンNameを取得し、似たNameのラベルを
□投稿者/ m2 (4回)-(2010/11/01(Mon) 16:06:26)
No54757 (きしり さん) に返信
> 2010/11/01(Mon) 15:46:00 編集(投稿者)

--------------------------------------------------------------------------------
// ボタン共通
private void button_Click(object sender, EventArgs e)
{
    // 押下ボタン名を取得し検索対象ラベル名に変換(ここでの例:button1 -> Label1 てな感じ)
    string searchLabelName = ((Button)sender).Name.Replace("button", "label");

    // 対象ラベル名を検索
    foreach (Control c in this.Controls)
    {
        if (c.Name == searchLabelName)
        {
            // ラベルに押下ボタンのテキストを表示
            ((Label)c).Text = ((Button)sender).Text;
            break;
        }
    }
}
--------------------------------------------------------------------------------

シンプルかどうかは不明

引用返信 編集キー/
■54762 / inTopicNo.3)  Re[2]: クリックされたボタンNameを取得し、似たNameのラベルを
□投稿者/ きしり (2回)-(2010/11/01(Mon) 17:17:28)
m2 さん

コントロール内を検索、なんていう方法があるんですね。
大変勉強になりました。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -