GrapeCity.Win.MultiRow Namespace > ListLabelCell Class : Clone Method |
Public Overrides Function Clone() As Object
Dim instance As ListLabelCell Dim value As Object value = instance.Clone()
public override object Clone()
This method will 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.
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 settings of cell 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. // So, when leaving edit mode, clear items to prepare editing control to be used 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 settings of cell 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. ' So, when leaving edit mode, you should clear items, to prepare the editing control to be used 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
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