【ASP.NET コントロール】Webユーザーコントロール

関連記事

Webユーザーコントロール ~あれこれ編~

http://blogs.yahoo.co.jp/dk521123/27529608.html

Webユーザコントロール

 * オリジナルのコントロールを作成する

■作成手順

 [1] [追加]-[新しい項目]-[Web]-[Webユーザコントロール]で、「追加」押下
 [2] 自分好みのサーバコントロールを配置し、保存する

■使用方法

 * ドラッグ&ドロップ(だけ)

■プロパティの付加

' デフォルトを作成するかどうかを格納するプライベート変数
Private _WithDefault As Boolean

' デフォルトを作成するかどうか
Public WriteOnly WithDefault() As Boolean
  Set
    Me._WithDefault = Value
  End Set
End Property

参考文献

http://www.atmarkit.co.jp/fdotnet/dotnettips/222aspuctlprop/aspuctlprop.html

■説明文の付加

サンプル

<System.ComponentModel.Description("デフォルトを作成するかどうか")> _
Public Property WithDefault() As Boolean

参考文献

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4211&forum=7

■イベントの付加

サンプル(Webユーザコントロール側)

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

Private Sub SelectIndex(ByVal sender As Object, ByVal e As EventArgs) Handles 【コントロールID】.SelectedIndexChanged
  RaiseEvent SelectedIndexChanged(sender, e) 
End Sub

サンプル(Webユーザコントロールを使う側)

Private Sub showCategory(ByVal sender As Object, ByVal e As EventArgs) Handles 【コントロールID】.SelectedIndexChanged
  '【処理】
End Sub

参考文献

http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_10/vb2005m_10_04.html

■サンプル (ASP.NET AJAX Control Toolkitのカレンダー&MaskedEditを組み合わせたTextBoxをWebユーザコントロールとして保管)

WebUserControl1.ascx

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="WebUserControl1.ascx.vb" Inherits="VBTestSite.WebUserControl1" %>
<asp:Panel ID="Panel1" runat="server">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <ajaxToolkit:MaskedEditExtender ID="TextBox1_MaskedEditExtender" runat="server" 
        CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
        CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
        CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
        Mask="9999/99/99" MaskType="Date" TargetControlID="TextBox1" 
        UserDateFormat="YearDayMonth">
    </ajaxToolkit:MaskedEditExtender>
    <ajaxToolkit:CalendarExtender ID="TextBox1_CalendarExtender" runat="server" 
        Enabled="True" TargetControlID="TextBox1" PopupButtonID="ImageButton1" 
        Format="yyyy/MM/dd">
    </ajaxToolkit:CalendarExtender>
    <asp:ImageButton ID="ImageButton1" runat="server" 
        ImageUrl="~/Images/Calendar_scheduleHS.png" 
        onclientclick="return false;" />
</asp:Panel>

WebUserControl1.ascx.vb

Public Class WebUserControl1
    Inherits System.Web.UI.UserControl
    ' Textプロパティの定義
    Public Property Text As String
        Get
            Return Me.TextBox1.Text
        End Get
        Set(value As String)
            Me.TextBox1.Text = value
        End Set
    End Property

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    End Sub
End Class