ControlIDConverter 類別

定義

提供型別轉換子 (Type Converter),以便擷取目前容器中控制項 ID 的清單。

public ref class ControlIDConverter : System::ComponentModel::StringConverter
public class ControlIDConverter : System.ComponentModel.StringConverter
type ControlIDConverter = class
    inherit StringConverter
Public Class ControlIDConverter
Inherits StringConverter
繼承
ControlIDConverter
衍生

範例

下列程式碼範例示範如何在 ControlIDConverter 需要 TypeConverter 轉譯控制項識別碼的 類別中使用 。 DebugInfoControl是一個簡單的控制項,可列印目前 Web Form 所包含之控制項的一些資訊。 其 ControlID 屬性會使用 TypeConverterAttribute ,將 指定 ControlIDConverterTypeConverter 用於該屬性的 。 會 DebugInfoControl 覆寫 方法, Render 以列印控制項中 Label 目標控制項的相關資訊。

namespace Samples.AspNet.CS {

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

  [DefaultProperty("ControlID")]
  public class DebugInfoControl : Control {

    public DebugInfoControl() {
    }

    public DebugInfoControl(string controlID) {
      ControlID = controlID;
    }

    [DefaultValue(""),
    TypeConverter(typeof(ControlIDConverter))]
    public string ControlID {
      get {
        object o = ViewState["ControlID"];
        if (o == null)
          return String.Empty;
        return (string)o;
      }
      set {
        if (ControlID != value) {
          ViewState["ControlID"] = value;
        }
      }
    }

    protected override void Render(HtmlTextWriter writer) {

      Label info = new Label();

      if (this.ControlID.Length == 0) {
        writer.Write("<Font Color='Red'>No ControlID set.</Font>");
      }

      Control ctrl = this.FindControl(ControlID);

      if (ctrl == null) {
        writer.Write("<Font Color='Red'>Could not find control " +  ControlID + " in Naming Container.</Font>");
      }
      else {
        writer.Write("<Font Color='Green'>Control " + ControlID + " found.<BR>");
        writer.Write("Its Naming Container is: " + ctrl.NamingContainer.ID + "<BR>");
        if (ctrl.EnableViewState)
          writer.Write("It uses view state to persist its state.<BR>");

        if (ctrl.EnableTheming)
          writer.Write("It can be assigned a Theme ID.<BR>");

        if (ctrl.Visible)
          writer.Write("It is visible on the page.<BR>");
        else
          writer.Write("It is not visible on the page.<BR>");

        writer.Write("</Font>");
      }
    }
  }
}
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet.VB

  <DefaultProperty("ControlID")>  _
  Public Class DebugInfoControl
     Inherits Control


     Public Sub New()
     End Sub


     Public Sub New(controlID As String)
        ControlID = controlID
     End Sub


     <DefaultValue(""), TypeConverter(GetType(ControlIDConverter))>  _
     Public Property ControlID() As String
        Get
           Dim o As Object = ViewState("ControlID")
           If o Is Nothing Then
              Return String.Empty
           End If
           Return CStr(o)
        End Get
        Set
           If ControlID <> value Then
              ViewState("ControlID") = value
           End If
        End Set
     End Property


     Protected Overrides Sub Render(writer As HtmlTextWriter)

        Dim info As New Label()

        If Me.ControlID.Length = 0 Then
           writer.Write("<Font Color='Red'>No ControlID set.</Font>")
        End If

        Dim ctrl As Control = Me.FindControl(ControlID)


        If ctrl Is Nothing Then
           writer.Write(("<Font Color='Red'>Could not find control " + ControlID + " in Naming Container.</Font>"))
        Else
           writer.Write(("<Font Color='Green'>Control " + ControlID + " found.<BR>"))
           writer.Write(("Its Naming Container is: " + ctrl.NamingContainer.ID + "<BR>"))
           If ctrl.EnableViewState Then
              writer.Write("It uses view state to persist its state.<BR>")
           End If
           If ctrl.EnableTheming Then
              writer.Write("It can be assigned a Theme ID.<BR>")
           End If
           If ctrl.Visible Then
              writer.Write("It is visible on the page.<BR>")
           Else
              writer.Write("It is not visible on the page.<BR>")
           End If
           writer.Write("</Font>")
        End If
     End Sub
  End Class
End Namespace

下列程式碼範例示範如何在 DebugInfoControl Web Form 中使用 ,以及 AccessDataSource 控制項來顯示控制項的相關資訊 AccessDataSource

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" assembly="Samples.AspNet.CS" %>
<%@Page  Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <asp:accessdatasource
          id="AccessDataSource1"
          runat="server"
          datasourcemode="DataReader"
          datafile="Northwind.mdb"
          selectcommand="SELECT OrderID FROM Orders WHERE EmployeeID=2">
      </asp:accessdatasource>

      <br />
      <aspSample:debuginfocontrol
          id="DebugInfoControl1"
          runat="server"
          controlid="AccessDataSource1" />

    </form>
  </body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" assembly="Samples.AspNet.VB" %>
<%@ Page  Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <asp:accessdatasource
          id="AccessDataSource1"
          runat="server"
          datasourcemode="DataReader"
          datafile="Northwind.mdb"
          selectcommand="SELECT OrderID FROM Orders WHERE EmployeeID=2">
      </asp:accessdatasource>

      <br />
      <aspSample:debuginfocontrol
          id="DebugInfoControl1"
          runat="server"
          controlid="AccessDataSource1" />

    </form>
  </body>
</html>

備註

類別 ControlIDConverter 衍生自 StringConverter 類別,並提供控制項識別碼清單,以便顯示在設計階段環境中的屬性方格控制項中。 類別 ControlIDConverter 也做為 和 ValidatedControlConverter 類別的基類 AssociatedControlConverter ,這些類別是分別支援驗證屬性屬性之 Web 控制項和控制項的類型轉換子。

如需類型轉換器的詳細資訊,請參閱 如何:實作類型轉換器一般化類型轉換

建構函式

ControlIDConverter()

初始化 ControlIDConverter 類別的新執行個體。

方法

CanConvertFrom(ITypeDescriptorContext, Type)

取得值,表示此轉換器是否可以用指定的內容將指定來源型別的物件轉換成字串。

(繼承來源 StringConverter)
CanConvertFrom(Type)

傳回值,指出這個轉換子是否可將指定之型別的物件轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
CanConvertTo(ITypeDescriptorContext, Type)

傳回這個轉換器是否可以使用指定的內容,將物件轉換成指定的類型。

(繼承來源 TypeConverter)
CanConvertTo(Type)

傳回值,指出這個轉換子是否可以將物件轉換成指定的型別。

(繼承來源 TypeConverter)
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

將指定值物件轉換為 String 物件。

(繼承來源 StringConverter)
ConvertFrom(Object)

會將指定值轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
ConvertFromInvariantString(ITypeDescriptorContext, String)

會使用不區分的文化特性和指定的內容,將指定的字串轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
ConvertFromInvariantString(String)

會使用不因文化特性而異,將指定字串轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

會使用指定內容和文化特性資訊,將指定文字轉換為物件。

(繼承來源 TypeConverter)
ConvertFromString(ITypeDescriptorContext, String)

會使用指定的內容,將指定文字轉換為物件。

(繼承來源 TypeConverter)
ConvertFromString(String)

會將指定的文字轉換成物件。

(繼承來源 TypeConverter)
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

使用指定的內容和文化特性資訊,將給定的值物件轉換為指定的類型。

(繼承來源 TypeConverter)
ConvertTo(Object, Type)

會使用引數,將指定值物件轉換成指定型別。

(繼承來源 TypeConverter)
ConvertToInvariantString(ITypeDescriptorContext, Object)

會使用指定的內容,將指定值轉換成不因文化特性而異的字串表示。

(繼承來源 TypeConverter)
ConvertToInvariantString(Object)

會將指定值轉換成不因文化特性而異的字串表示。

(繼承來源 TypeConverter)
ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

會使用指定的內容和文化特性資訊,將指定值轉換為字串表示。

(繼承來源 TypeConverter)
ConvertToString(ITypeDescriptorContext, Object)

會使用指定的內容,將指定值轉換為字串表示。

(繼承來源 TypeConverter)
ConvertToString(Object)

會將指定值轉換成字串表示。

(繼承來源 TypeConverter)
CreateInstance(IDictionary)

重新建立 Object,需為物件提供一組屬性值。

(繼承來源 TypeConverter)
CreateInstance(ITypeDescriptorContext, IDictionary)

使用指定的內容,建立與這個 TypeConverter 相關聯之類型的執行個體,並為物件提供一組屬性值。

(繼承來源 TypeConverter)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
FilterControl(Control)

傳回值,指出指定控制項的控制項 ID 是否加入 TypeConverter.StandardValuesCollection 方法所傳回的 GetStandardValues(ITypeDescriptorContext) 中。

GetConvertFromException(Object)

傳回要在無法執行轉換時擲回的例外狀況。

(繼承來源 TypeConverter)
GetConvertToException(Object, Type)

傳回要在無法執行轉換時擲回的例外狀況。

(繼承來源 TypeConverter)
GetCreateInstanceSupported()

傳回值,指出在這個物件上變更值時是否需要呼叫 CreateInstance(IDictionary) 方法來建立新值。

(繼承來源 TypeConverter)
GetCreateInstanceSupported(ITypeDescriptorContext)

傳回在這個物件上變更值是否需要呼叫 CreateInstance(IDictionary) 來建立新的值,並使用指定的內容。

(繼承來源 TypeConverter)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetProperties(ITypeDescriptorContext, Object)

會使用指定的內容,傳回由值參數所指定之陣列型別的屬性集合。

(繼承來源 TypeConverter)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

使用指定的內容和屬性 (attribute),傳回由該值參數所指定之陣列類型的屬性 (property) 集合。

(繼承來源 TypeConverter)
GetProperties(Object)

傳回由值參數所指定的陣列型別的屬性集合。

(繼承來源 TypeConverter)
GetPropertiesSupported()

傳回值,指出這個物件是否支援屬性。

(繼承來源 TypeConverter)
GetPropertiesSupported(ITypeDescriptorContext)

使用指定的內容,傳回這個物件是否支援屬性。

(繼承來源 TypeConverter)
GetStandardValues()

從為這個型別轉換子所設計的資料型別預設內容中,會傳回標準值的集合。

(繼承來源 TypeConverter)
GetStandardValues(ITypeDescriptorContext)

提供格式內容時,從 IDesignerHost 內的容器傳回控制項 ID 的集合。

GetStandardValuesExclusive()

傳回值,指出從 GetStandardValues() 所傳回的標準值集合是否為獨佔清單。

(繼承來源 TypeConverter)
GetStandardValuesExclusive(ITypeDescriptorContext)

使用指定內容傳回值,指出 GetStandardValues(ITypeDescriptorContext) 方法傳回的標準值集合,是否為可能值的專用清單。

GetStandardValuesSupported()

傳回這個物件是否支援可以從清單中選取的標準值集合。

(繼承來源 TypeConverter)
GetStandardValuesSupported(ITypeDescriptorContext)

使用指定內容傳回值,指出這個物件是否支援可以從清單選取的控制項 ID 值標準集合。

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IsValid(ITypeDescriptorContext, Object)

傳回指定值物件對這個類型和指定的內容是否有效。

(繼承來源 TypeConverter)
IsValid(Object)

會傳回指定值物件是否對這個型別有效。

(繼承來源 TypeConverter)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
SortProperties(PropertyDescriptorCollection, String[])

排序屬性的集合。

(繼承來源 TypeConverter)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於

另請參閱