The following sample code illustrates how to add a button element to an UltraGrid cell.
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);
}
Target Platforms: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2