- PR -

C#.NETでPanelにButtonコントロールを使用するには

1
投稿者投稿内容
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2003-10-13 16:31
はじめまして、いつも参考させていただいております。

PanelコントロールにButtonを追加しましたが、ソースコードは以下である。

Button btn=new Button();
btn.Text="編集";
btn.ID="btn1;
btn.Width=new Unit("50px");
btn.Height=new Unit("30px");
Panel1.Controls.Add(btn);

そのボタンをクリックした時に、
イベントの処理を発生させたいのですが、どうすればいいのでしょうか?

ご存知の方、よろしくお願いします
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2003-10-13 19:30
引用:

チャチャさんの書き込み (2003-10-13 16:31) より:
そのボタンをクリックした時に、
イベントの処理を発生させたいのですが、どうすればいいのでしょうか?



ボタンを動的に追加したということですか?
this.btn.Click += new System.EventHandler(this.btn_Click);
一応この一文でbtn_ClickメソッドがClick時に呼ばれるようになります。

通常はデザイナでフォーム上でもパネル上にでもボタンを配置したものであれば、
そのボタンをダブルクリックするだけでイベントハンドラの登録が行われて、
ソースコードエディタ上でClickイベント用のメソッド雛形も作成されるので、
そこにClickイベントの処理を書けばOKです。

また、そのときに畳まれている「Windows フォーム デザイナで生成されたコード」
の中のInitializeComponentメソッドのコードを見れば、
どのようにClickイベントを処理しているのかも書かれています。
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2003-10-14 17:40
よねKEN さんへ
private void Page_Load(object sender, System.EventArgs e)
{
Button btn=new Button();
btn.Text="編集";
btn.ID="btn1";
btn.Width=new Unit("50px");
btn.Height=new Unit("30px");
Panel1.Controls.Add(btn);
}
private void panel1_click(object sender, System.EventArgs e)
{
this.btn.Click += new System.EventHandler(this.btn_Click);
Label1.Text="ok";
}

を書きましたが、コンパイルする時、エラーが出てきました。
やりたいことはページをロードされたときに、パネルにボタンを追加させて、
それからボタンを押すと何かのイベントの処理を発生させたいが、どうもうまくいきません。

ご教授いただけないでしょうか?



この一文をどんなメソッドに
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-10-14 18:10
まず、「btn.ID」ってことはこれはWEBアプリケーションですよね?

それと、この場合btnはPageのメンバではないので this.btn では
アクセスできないと思います。

private void Page_Load(object sender, System.EventArgs e)
{
Button btn=new Button();
btn.Text="編集";
btn.ID="btn1";
btn.Width=new Unit("50px");
btn.Height=new Unit("30px");
Panel1.Controls.Add(btn);

btn.Click += new System.EventHandler(this.btn_Click);

}
これで動くと思うのですが。(これが良い方法かはわかりませんが)

当然btn_Clickメソッドは定義する必要があります。
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2003-10-15 12:00
べるさんの言うとおりに、
btn.Click += new System.EventHandler(btn_Click);
一文を追加して、Web上でボタンを押すと思ったように動きました。

大変感謝しております。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)