GrapeCity MultiRow Windows Forms Documentation
Clone Method (ListCell)
Example 


Creates an exact copy of this cell.
Syntax
Public Overrides Function Clone() As Object
Dim instance As ListCell
Dim value As Object
 
value = instance.Clone()
public override object Clone()

Return Value

A System.Object value that represents the cloned Cell.
Remarks

This method does not copy the Cell.Name property of this Cell. The Name property is a unique identification of a Cell in a Template, so cloning it is not proper.

Override the Clone method whenever you derive from the Cell class and add new properties to the derived class.

Note to Inheritors:

When overriding the Clone method in a derived class, call the base class's Clone method so that the properties of the base class are copied to the new cell, and be sure to also copy the values of any properties that were added to the derived class.

Example
The following code example shows how to use this method in a custom cell. This code example is part of a larger example provided for the IEditingControl class.
public class ListBoxCell : Cell
    {
        public override Type EditType
        {
            get
            {
                return typeof(ListBoxEditingControl);
            }
        }

        List<string> _items = new List<string>();

        public List<string> Items
        {
            get
            {
                return _items;
            }
        }

        protected override void InitializeEditingControl(int rowIndex, object formattedValue, CellStyle style)
        {
            // Apply the cell settings to editing control. 
            base.InitializeEditingControl(rowIndex, formattedValue, style);

            ListBoxEditingControl listBoxEditingControl = this.GcMultiRow.EditingControl as ListBoxEditingControl;

            for (int i = 0; i < this._items.Count; i++)
            {
                listBoxEditingControl.Items.Add(this._items[i]);
            }

            listBoxEditingControl.FormattedValue = formattedValue;
        }

        protected override void TerminateEditingControl(int rowIndex)
        {
            ListBoxEditingControl listBoxEditingControl = this.GcMultiRow.EditingControl as ListBoxEditingControl;
            
            // For performance reasons, MultiRow uses the same instance for all cells.
            // When leaving edit mode, clear items to prepare editing control for use next time.
            listBoxEditingControl.Items.Clear();

            base.TerminateEditingControl(rowIndex);
        }

        public override object Clone()
        {
            // When you derive from Cell and add new properties to the derived class, be sure to
            // override the Clone method to copy the new properties during cloning operations. 
            // You should also call the base class's Clone method so that the properties of the 
            // base class are copied to the new cell. 
            ListBoxCell listBoxCell = base.Clone() as ListBoxCell;

            listBoxCell.Items.AddRange(this.Items);

            return listBoxCell;
        }
    }
Public Class ListBoxCell
    Inherits Cell
    Public Overloads Overrides ReadOnly Property EditType() As Type
        Get
            Return GetType(ListBoxEditingControl)
        End Get
    End Property

    Private _items As New List(Of String)()

    Public ReadOnly Property Items() As List(Of String)
        Get
            Return _items
        End Get
    End Property

    Protected Overloads Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, ByVal formattedValue As Object, ByVal style As CellStyle)
        ' Apply the cell settings to editing control. 
        MyBase.InitializeEditingControl(rowIndex, formattedValue, style)

        Dim listBoxEditingControl As ListBoxEditingControl = TryCast(Me.GcMultiRow.EditingControl, ListBoxEditingControl)


        For i As Integer = 0 To Me._items.Count - 1
            listBoxEditingControl.Items.Add(Me._items(i))
        Next

        listBoxEditingControl.FormattedValue = formattedValue
    End Sub

    Protected Overloads Overrides Sub TerminateEditingControl(ByVal rowIndex As Integer)
        Dim listBoxEditingControl As ListBoxEditingControl = TryCast(Me.GcMultiRow.EditingControl, ListBoxEditingControl)

        ' For performance reasons, MultiRow uses the same instance for all cells.
        ' When leaving edit mode, clear items to prepare the editing control for use next time.
        listBoxEditingControl.Items.Clear()

        MyBase.TerminateEditingControl(rowIndex)
    End Sub

    Public Overloads Overrides Function Clone() As Object
        ' When you derive from Cell and add new properties to the derived class, be sure to
        ' override the Clone method to copy the new properties during cloning operations. 
        ' You should also call the base class's Clone method so that the properties of the 
        ' base class are copied to the new cell. 
        Dim listBoxCell As ListBoxCell = TryCast(MyBase.Clone(), ListBoxCell)

        listBoxCell.Items.AddRange(Me.Items)

        Return listBoxCell
    End Function
End Class
Requirements

Target Platforms: 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

See Also

Reference

ListCell Class
ListCell Members

 

 


Copyright © GrapeCity, inc. All rights reserved.