ControlIDConverter 类

定义

提供检索当前容器中控件 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 呈现控件 ID 的类中使用 。 DebugInfoControl是一个简单的控件,它打印出当前 Web 窗体包含的控件上的一些信息。 其 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 窗体中与 控件一 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 类,并提供控件 ID 列表,以便在设计时环境中的属性网格控件中显示。 类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[])

使用指定的上下文和特性返回由该值参数指定的数组类型的属性集合。

(继承自 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)

适用于

另请参阅