次の方法で共有


ControlDesigner.ViewControl プロパティ

定義

デザイン時 HTML マークアップのプレビュー用に使用できる Web サーバー コントロールを取得または設定します。

public:
 property System::Web::UI::Control ^ ViewControl { System::Web::UI::Control ^ get(); void set(System::Web::UI::Control ^ value); };
public System.Web.UI.Control ViewControl { get; set; }
member this.ViewControl : System.Web.UI.Control with get, set
Public Property ViewControl As Control

プロパティ値

デザイン時 HTML マークアップを生成するために基本クラスが使用する Control オブジェクト。

次のコード例では、 属性を使用してコントロール デザイナーをマークする方法を SupportsPreviewControlAttribute 示します。 このコード例では、 クラスから Web サーバー コントロールを Label 派生させ、コントロールをカスタム コントロール デザイナーの実装に関連付けます。 コントロール デザイナー のクラス宣言は、 属性が にtrue設定されたSupportsPreviewControl状態でマークされます。 コントロール デザイナーは メソッドを GetDesignTimeHtml オーバーライドし、デザイン時に Text コントロールの プロパティを斜体で表示します。

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.Design.WebControls;
using System.Web.UI.WebControls;
using System.Reflection;

namespace ControlDesignerSamples.CS
{
    // Define a simple designer associated with a 
    // simple text web control.
    
    // Mark the designer with the SupportsPreviewControlAttribute set
    // to true.  This means the base.UsePreviewControl returns true,
    // and base.ViewControl returns a temporary preview copy of the control.
    [SupportsPreviewControl(true)]
    public class SimpleTextControlDesigner : TextControlDesigner
    {		
        // Override the base GetDesignTimeHtml method to display 
        // the design time text in italics.
        public override string GetDesignTimeHtml()
        {
            string html = String.Empty;
 
            try
            {
                // Initialize the return string to the default
                // design time html of the base TextControlDesigner.
                html = base.GetDesignTimeHtml();

                // Get the ViewControl for the associated control.
                Label ctrl = (Label)ViewControl;

                ctrl.Style.Add(HtmlTextWriterStyle.FontStyle, "Italic");
                html = base.GetDesignTimeHtml();
            }
            catch (System.Exception e)
            {
               if (String.IsNullOrEmpty(html))
               {
                   html = GetErrorDesignTimeHtml(e);
               }
            }
            
            return html;
        }
    }

    // Derive a simple Web control from Label to render a text string.
    // Associate this control with the SimpleTextControlDesigner.
    [DesignerAttribute("ControlDesignerSamples.CS.SimpleTextControlDesigner"),
    ToolboxData("<{0}:MyLabelControl Runat=\"Server\"><{0}:MyLabelControl>")]
    public class MyLabelControl : Label
    {
        // Use the Label control implementation, but associate
        // the derived class with the custom control designer.
    }
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.Design.WebControls
Imports System.Web.UI.WebControls
Imports System.Reflection

Namespace ControlDesignerSamples.VB

    ' Derive a simple Web control from Label to render a text string.
    ' Associate this control with the SimpleTextControlDesigner.
    <DesignerAttribute("ControlDesignerSamples.CS.SimpleTextControlDesigner"), _
    ToolboxData("<{0}:MyLabelControl Runat=""Server""><{0}:MyLabelControl>")> _
    Public Class MyLabelControl
        Inherits Label

        ' Use the Label control implementation, but associate
        ' the derived class with the custom control designer.
    End Class


    ' Mark the designer with the SupportsPreviewControlAttribute set
    ' to true.  This means the base.UsePreviewControl returns true,
    ' and base.ViewControl returns a temporary preview copy of the control.
    <SupportsPreviewControl(True)> _
    Public Class SimpleTextControlDesigner
        Inherits TextControlDesigner

        ' Override the base GetDesignTimeHtml method to display 
        ' the design time text in italics.
        Public Overrides Function GetDesignTimeHtml() As String
            Dim html As String = String.Empty

            Try
                ' Get the ViewControl for the associated control.
                Dim ctrl As Label = CType(ViewControl, Label)

                ' Set the default text, if necessary
                If ctrl.Text.Length = 0 Then
                    ctrl.Text = "Sample Text"
                End If

                ' Set the style to italic
                ctrl.Style.Add(HtmlTextWriterStyle.FontStyle, "italic")

                ' Let the base class create the HTML markup
                html = MyBase.GetDesignTimeHtml()
            Catch ex As Exception
                If String.IsNullOrEmpty(html) Then
                    ' Display the exception message
                    html = GetErrorDesignTimeHtml(ex)
                End If
            End Try

            Return html
        End Function

    End Class
End Namespace

注釈

プロパティは ViewControl 、 プロパティを UsePreviewControl 使用して戻り値を決定します。

プロパティが UsePreviewControl の場合、プロパティはtrueViewControlコントロールの一時的なコピーを返します。 一時コントロールに対する変更は保持されません。

プロパティが UsePreviewControl の場合、プロパティは falseViewControl コントロールの プロパティのComponentインスタンスを返します。 コントロールのインスタンスに対する変更は保持されます。

オブジェクトの SupportsPreviewControlAttribute 設定はSupportsPreviewControl、 プロパティのUsePreviewControl値を設定するために使用されます。 したがって、 設定はSupportsPreviewControl、基底ControlDesignerクラスの プロパティによって返されるコントロールのViewControl種類を決定します。 SupportsPreviewControlAttributeコントロール デザイナーの宣言で が指定されていない場合、オブジェクトのControlDesigner動作は、 プロパティを としてfalse指定することとSupportsPreviewControl同じです。

適用対象

こちらもご覧ください