バージョン

IUIElementCreationFilter インターフェース

子要素のカスタム作成/配置を可能にするために、コントロールのユーザーによって提供されるインターフェイス
シンタックス
'宣言
 
Public Interface IUIElementCreationFilter 
public interface IUIElementCreationFilter 
使用例
Imports Infragistics.Win
    Imports Infragistics.Win.UltraWinGrid

' Implement the IUIElementCreationFilter interface on a class
' (in this case the form)
Public Class Form1
    Inherits System.Windows.Forms.Form
    Implements Infragistics.Win.IUIElementCreationFilter


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Set the grid’s CreationFilter property to the object that
        ' implements the IUIElementCreationFilter interface.
        Me.UltraGrid1.CreationFilter = Me

    End Sub

    Public Sub AfterCreateChildElements(ByVal parent As Infragistics.Win.UIElement) Implements Infragistics.Win.IUIElementCreationFilter.AfterCreateChildElements

        Dim column As UltraGridColumn
        Dim child As UIElement
        Dim rc As Rectangle
        Dim childRect As Rectangle
        Dim elementToAdd As ButtonUIElement

        ' If the parent element is not a cell element return
        If (Not (TypeOf (parent) Is CellUIElement)) Then Return

        ' Get the associated column
        column = parent.GetContext(GetType(UltraGridColumn))

        ' Return if the column isn’t the one we want to add the button to.
        If column Is Nothing Then Return
        If Not column.Key = "City" Then Return

        ' Create a new button element
        elementToAdd = New ButtonUIElement(parent)

        ' hook into its click event
        AddHandler elementToAdd.ElementClick, AddressOf Me.OnCustomButtonClick

        ' Get the rect of the parent element inside its borders
        rc = parent.RectInsideBorders

        ' Set the width of the button's rect
        rc.Width = 12

        ' Set the button element's rect
        elementToAdd.Rect = rc

        ' Loop over the child elements and adjust their
        ' rects so they don't overlap the button
        For Each child In parent.ChildElements
            childRect = child.Rect

            If (childRect.Left < rc.Right) Then
                childRect.Width -= rc.Right - childRect.Left
                childRect.X += rc.Right - childRect.Left
                child.Rect = childRect
            End If
        Next

        ' Append the button element to the 
        ' child elements collection
        parent.ChildElements.Add(elementToAdd)

    End Sub

    Private Sub OnCustomButtonClick(ByVal sender As System.Object, ByVal e As UIElementEventArgs)

        Dim cell As UltraGridCell

        ' Get the associated cell
        cell = e.Element.GetContext(GetType(UltraGridCell))

        ' Display the cell's text or do something more meaningful
        If (Not cell Is Nothing) Then
            MessageBox.Show("Custom cell button clicked. Cell.Text = " + cell.Text)
        End If

    End Sub
using System.Diagnostics;
	using Infragistics.Win;
	using Infragistics.Win.UltraWinGrid;

// Implement the IUIElementCreationFilter interface on a class
// (in this case the form)
public class Form1 : 
		System.Windows.Forms.Form, 
		Infragistics.Win.IUIElementCreationFilter
{

	private void Form1_Load(object sender, System.EventArgs e)
	{

		// Set the grid’s CreationFilter property to the object that
		// implements the IUIElementCreationFilter interface.

		this.ultraGrid1.CreationFilter = this;

	}

	public void AfterCreateChildElements(Infragistics.Win.UIElement parent)
	{

		// See if the parent element is a cell element
		if ( parent is CellUIElement )
		{
			// Get the associated column
			UltraGridColumn column = parent.GetContext( typeof( UltraGridColumn ) ) as UltraGridColumn;

			// See if the column is the one we want to add the button to
			if ( column != null &&
				 column.Key == "City" )
			{
				// Create a new button element
				ButtonUIElement elementToAdd = new ButtonUIElement( parent );
				
				// Hook into its click event
				elementToAdd.ElementClick += new UIElementEventHandler( this.OnCustomButtonClick );
				
				// Get the rect of the parent element inside its borders
				Rectangle rect = parent.RectInsideBorders;

				// Set the width of the button's rect
				rect.Width = 12;

				// Set the button's rect
				elementToAdd.Rect = rect;

				// Loop over the child elements and adjust their
				// rects so they don't overlap the button
				foreach ( UIElement child in parent.ChildElements )
				{
					Rectangle childRect = child.Rect;

					if ( childRect.Left < rect.Right )
					{
						childRect.Width -= rect.Right - childRect.Left;
						childRect.X		+= rect.Right - childRect.Left;
						child.Rect = childRect;
					}
				}

				// Append the button element to the 
				// child elements collection
				parent.ChildElements.Add( elementToAdd );
			}
		}

	}

	public bool BeforeCreateChildElements(Infragistics.Win.UIElement parent)
	{

		return false;

	}

	private void OnCustomButtonClick( object sender, UIElementEventArgs e )
	{

		// Get the associated cell
		UltraGridCell cell = e.Element.GetContext( typeof( UltraGridCell ) ) as UltraGridCell;

		// Display the cell's text or do something more meaningful
		if ( cell != null )
			MessageBox.Show("Custom cell button clicked. Cell.Text = " + cell.Text);

	}
参照