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 指定 ControlIDConverter 用作 TypeConverter 该属性的修饰。 Render重写DebugInfoControl方法以输出有关控件中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 窗体中使用 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类还充当类的基类AssociatedControlConverterValidatedControlConverter,这些类是分别支持验证属性属性的 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) 控件 ID。

GetConvertFromException(Object)

返回在无法执行转换时引发的异常。

(继承自 TypeConverter)
GetConvertToException(Object, Type)

返回在无法执行转换时引发的异常。

(继承自 TypeConverter)
GetCreateInstanceSupported()

返回更改此对象上的值是否需要调用 CreateInstance(IDictionary) 方法才能创建新值。

(继承自 TypeConverter)
GetCreateInstanceSupported(ITypeDescriptorContext)

返回更改此对象上的值是否需要调用 CreateInstance(IDictionary) 才能使用指定的上下文创建新值。

(继承自 TypeConverter)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

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

(继承自 TypeConverter)
GetProperties(ITypeDescriptorContext, Object)

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

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

适用于

另请参阅