- - PR -
親画面でのイベント取得方法について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-12-07 14:34
自分で作成したWebユーザーコントロール(.ascx)のイベントを親画面で取得する方法はあるのでしょうか?
例) ・TEXTBOXとBUTTONを配置したWebユーザーコントロールを作成(.ascx) ・Webフォームにはラベルと上記で作成したWebユーザーコントロールを配置。(.aspx) 操作 1.WebユーザーコントロールのTEXTBOXに文字を入力 2.WebユーザーコントロールのBUTTONを押下 3.WebフォームでBUTTONのイベントを取得して、TEXTBOXの文字列をラベルに設定する。 Webユーザーコントロール側のボタンが押下された際に、Webユーザーコントロールを含んでいる親画面で、ラベルに文字列を設定するという処理を行いたいのですが、「Webユーザーコントロール」では、実現できないのでしょうか? 「Webカスタムコントロール」を作成する必要があるのでしょうか? お分かりになる方がいましたらお願い致します。 [ メッセージ編集済み 編集者: FLA 編集日時 2002-12-07 14:36 ] [ メッセージ編集済み 編集者: FLA 編集日時 2002-12-07 17:14 ] |
|
投稿日時: 2002-12-09 12:03
こんな感じのコードでユーザコントロールでもイベントを
拾えます。 // ユーザコントロールに追加するコード public event EventHandler OnClick // ユーザコントロール内のボタンのクリックイベント private void Button1_OnClick(object sender,EventArgs e) { if(OnClick!=null) OnClick(sender,e); } -------------------------------------------------------------------- ユーザコントロールを使用するPage // コードビハインドを使う場合に、ユーザコントロール型で、IDを変数名にして定義 // プロテクトまたはパブリックでないと、ASPXファイル側では認識しない。 // UserControl型は、具体的なユーザコントロールの型名にする。 // UserControl1 というのは、 ユーザコントロールのIDを UserControl1と命名している // と仮定 protected UserControl型 UserControl1; protected override void OnInit(object sender,EventArgs e) { UserControl1.OnClick += new EventHandler(UserControl1_OnClick); base.OnInit(sender,e); } private void UserControl1_OnClick(object sender,EventArgs e) { // ココにUserControl1のボタンがクリックされたときの動作を記述 } |
|
投稿日時: 2002-12-10 15:16
返信遅くなり申し訳ありませんでした。
いのつちさん、返信ありがとうございます。 いのつちさんのコードを参考にしてみたのですが、 実はCを全く触ったことがなく、VB.NETに書き換える 事ができませんでした。 VBではどのようなコードになるのでしょうか・・・ 度々申し訳ありません。 |
|
投稿日時: 2002-12-13 11:17
実は、NETになってからのVBを触っていないので、VB.NETについて
詳細がよくわかっていなかったりします。 こんな感じでしょうか。 ユーザコントロール <%@ Control Language="vb" AutoEventWireup="false" Codebehind="MyControl.ascx.vb" Inherits="testVB.MyControl" %> <asp:Button id="Button1" runat="server" Text="Button"></asp:Button> ユーザコントロールのコードビハインド Public MustInherit Class MyControl Inherits System.Web.UI.UserControl Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button Public Event OnClick As System.EventHandler '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click if OnClick is not nothing then RaiseEvent OnClick(sender, e) '^^^^^^^^^^^^^^^^^^^^^^^^^^^^ end if End Sub End Class Webページ <%@ Register TagPrefix="uc1" TagName="MyControl" Src="MyControl.ascx" %> <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="testVB.WebForm1"%> <HTML> <HEAD> <title>WebForm1</title> </HEAD> <body> <form id="Form1" method="post" runat="server"> <asp:Label id="Label1" runat="server"></asp:Label> <uc1:MyControl id="MyControl1" runat="server"></uc1:MyControl> </form> </body> </HTML> Webページコードビハインド Public Class WebForm1 Inherits System.Web.UI.Page Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents MyControl1 As MyControl '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Protected Sub UserControl1_OnClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyControl1.OnClick ' ^^^^^^^^^^^^^^^^^^^^^^^^^^ Label1.Text = "ユーザコントロールのボタンがクリックされました。" End Sub End Class |
|
投稿日時: 2002-12-14 04:41
いのつちさん、ありがとうございます。
If OnClick Is Not Nothing Then RaiseEvent OnClick(sender, e) End If OnClickに下線が出て、エラーとなっていましたが、よく分からなかったので IF文をコメントアウトして動作させたところ、望みどおりの結果を得ることが出来ました。 |
1