QA@IT
«回答へ戻る

40
 ```
 
 ページ側でイベント処理する方法は、ほかのコントロールと同じようにHandlesでイベント指定します
-VisaulStudioなら、エディタのドロップダウンで選択すれば自動的に作成されます
+VisualStudioなら、エディタのドロップダウンで選択すれば自動的に作成されます
 (先にユーザーコントロールをビルドしないとだめかもしれません)
+あとはそこでVisibleを切り替えるだけです
 
 top.aspx
 ```html
 ```
 
 uc2は省略します
-最低限これだけで、Visbleの切り替えは実現できます
+最低限これだけで、表示の切り替えは実現できます

ユーザーコントロールにイベントを定義するやり方です
イベントの名前や引数はなんでもよいのですが
ここではClickというイベントを定義して、ボタンクリック時にそのイベントを直接発生させます
引数は標準的なイベント引数に合わせてあります

uc1.ascx

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="uc1.ascx.vb" Inherits="uc1" %>
<h2>最初の画面</h2>
    <asp:Button ID="Button1" runat="server" Text="確認画面" />

uc1.ascx.vb

Public Class uc1
    Inherits System.Web.UI.UserControl

    Public Event Click(ByVal sender As Object, ByVal e As EventArgs)

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RaiseEvent Click(Me, EventArgs.Empty)
    End Sub

End Class

ページ側でイベント処理する方法は、ほかのコントロールと同じようにHandlesでイベント指定します
VisualStudioなら、エディタのドロップダウンで選択すれば自動的に作成されます
(先にユーザーコントロールをビルドしないとだめかもしれません)
あとはそこでVisibleを切り替えるだけです

top.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile='top.aspx.vb' Inherits="top"%>
<%@ Register Src="~/uc1.ascx" TagPrefix="contents" TagName="uc1" %>
<%@ Register Src="~/uc2.ascx" TagPrefix="contents" TagName="uc2" %>
<head>
    <title>top</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <contents:uc1 ID="uc1" runat="server" Visible="true" />
        <contents:uc2 ID="uc2" runat="server" Visible="false" />
    </form>
</body>

top.aspx.vb

Public Class top
    Inherits System.Web.UI.Page

    Private Sub uc1_Click(sender As Object, e As EventArgs) Handles uc1.Click
        uc1.Visible = False
        uc2.Visible = True
    End Sub

End Class

uc2は省略します
最低限これだけで、表示の切り替えは実現できます

ユーザーコントロールにイベントを定義するやり方です
イベントの名前や引数はなんでもよいのですが
ここではClickというイベントを定義して、ボタンクリック時にそのイベントを直接発生させます
引数は標準的なイベント引数に合わせてあります

uc1.ascx
```html
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="uc1.ascx.vb" Inherits="uc1" %>
<h2>最初の画面</h2>
    <asp:Button ID="Button1" runat="server" Text="確認画面" />
```
uc1.ascx.vb
```vb
Public Class uc1
    Inherits System.Web.UI.UserControl

    Public Event Click(ByVal sender As Object, ByVal e As EventArgs)

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RaiseEvent Click(Me, EventArgs.Empty)
    End Sub

End Class
```

ページ側でイベント処理する方法は、ほかのコントロールと同じようにHandlesでイベント指定します
VisualStudioなら、エディタのドロップダウンで選択すれば自動的に作成されます
(先にユーザーコントロールをビルドしないとだめかもしれません)
あとはそこでVisibleを切り替えるだけです

top.aspx
```html
<%@ Page Language="VB" AutoEventWireup="false" CodeFile='top.aspx.vb' Inherits="top"%>
<%@ Register Src="~/uc1.ascx" TagPrefix="contents" TagName="uc1" %>
<%@ Register Src="~/uc2.ascx" TagPrefix="contents" TagName="uc2" %>
<head>
    <title>top</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <contents:uc1 ID="uc1" runat="server" Visible="true" />
        <contents:uc2 ID="uc2" runat="server" Visible="false" />
    </form>
</body>
```
top.aspx.vb
```vb
Public Class top
    Inherits System.Web.UI.Page

    Private Sub uc1_Click(sender As Object, e As EventArgs) Handles uc1.Click
        uc1.Visible = False
        uc2.Visible = True
    End Sub

End Class
```

uc2は省略します
最低限これだけで、表示の切り替えは実現できます

回答を投稿

ユーザーコントロールにイベントを定義するやり方です
イベントの名前や引数はなんでもよいのですが
ここではClickというイベントを定義して、ボタンクリック時にそのイベントを直接発生させます
引数は標準的なイベント引数に合わせてあります

uc1.ascx

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="uc1.ascx.vb" Inherits="uc1" %>
<h2>最初の画面</h2>
    <asp:Button ID="Button1" runat="server" Text="確認画面" />

uc1.ascx.vb

Public Class uc1
    Inherits System.Web.UI.UserControl

    Public Event Click(ByVal sender As Object, ByVal e As EventArgs)

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RaiseEvent Click(Me, EventArgs.Empty)
    End Sub

End Class

ページ側でイベント処理する方法は、ほかのコントロールと同じようにHandlesでイベント指定します
VisaulStudioなら、エディタのドロップダウンで選択すれば自動的に作成されます
(先にユーザーコントロールをビルドしないとだめかもしれません)

top.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile='top.aspx.vb' Inherits="top"%>
<%@ Register Src="~/uc1.ascx" TagPrefix="contents" TagName="uc1" %>
<%@ Register Src="~/uc2.ascx" TagPrefix="contents" TagName="uc2" %>
<head>
    <title>top</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <contents:uc1 ID="uc1" runat="server" Visible="true" />
        <contents:uc2 ID="uc2" runat="server" Visible="false" />
    </form>
</body>

top.aspx.vb

Public Class top
    Inherits System.Web.UI.Page

    Private Sub uc1_Click(sender As Object, e As EventArgs) Handles uc1.Click
        uc1.Visible = False
        uc2.Visible = True
    End Sub

End Class

uc2は省略します
最低限これだけで、Visbleの切り替えは実現できます

ユーザーコントロールにイベントを定義するやり方です
イベントの名前や引数はなんでもよいのですが
ここではClickというイベントを定義して、ボタンクリック時にそのイベントを直接発生させます
引数は標準的なイベント引数に合わせてあります

uc1.ascx
```html
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="uc1.ascx.vb" Inherits="uc1" %>
<h2>最初の画面</h2>
    <asp:Button ID="Button1" runat="server" Text="確認画面" />
```
uc1.ascx.vb
```vb
Public Class uc1
    Inherits System.Web.UI.UserControl

    Public Event Click(ByVal sender As Object, ByVal e As EventArgs)

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RaiseEvent Click(Me, EventArgs.Empty)
    End Sub

End Class
```

ページ側でイベント処理する方法は、ほかのコントロールと同じようにHandlesでイベント指定します
VisaulStudioなら、エディタのドロップダウンで選択すれば自動的に作成されます
(先にユーザーコントロールをビルドしないとだめかもしれません)

top.aspx
```html
<%@ Page Language="VB" AutoEventWireup="false" CodeFile='top.aspx.vb' Inherits="top"%>
<%@ Register Src="~/uc1.ascx" TagPrefix="contents" TagName="uc1" %>
<%@ Register Src="~/uc2.ascx" TagPrefix="contents" TagName="uc2" %>
<head>
    <title>top</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <contents:uc1 ID="uc1" runat="server" Visible="true" />
        <contents:uc2 ID="uc2" runat="server" Visible="false" />
    </form>
</body>
```
top.aspx.vb
```vb
Public Class top
    Inherits System.Web.UI.Page

    Private Sub uc1_Click(sender As Object, e As EventArgs) Handles uc1.Click
        uc1.Visible = False
        uc2.Visible = True
    End Sub

End Class
```

uc2は省略します
最低限これだけで、Visbleの切り替えは実現できます