Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / TreeNodeConverter.cs / 1305376 / TreeNodeConverter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using System.Runtime.Serialization.Formatters; using System.Runtime.Remoting; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Drawing; using System.Diagnostics; using System.Globalization; using System.Reflection; ////// /// TreeNodeConverter is a class that can be used to convert /// TreeNode objects from one data type to another. Access this /// class through the TypeDescriptor. /// public class TreeNodeConverter : TypeConverter { ////// /// public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(InstanceDescriptor)) { return true; } return base.CanConvertTo(context, destinationType); } ///Gets a value indicating whether this converter can /// convert an object to the given destination type using the context. ////// /// Converts the given object to another type. The most common types to convert /// are to and from a string object. The default implementation will make a call /// to ToString on the object if the object is valid and if the destination /// type is string. If this cannot convert to the desitnation type, this will /// throw a NotSupportedException. /// public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == null) { throw new ArgumentNullException("destinationType"); } if (destinationType == typeof(InstanceDescriptor) && value is TreeNode) { TreeNode node = (TreeNode)value; MemberInfo info = null; object[] args = null; if (node.ImageIndex == -1 || node.SelectedImageIndex == -1) { if (node.Nodes.Count == 0) { info = typeof(TreeNode).GetConstructor(new Type[] {typeof(string)}); args = new object[] {node.Text}; } else { info = typeof(TreeNode).GetConstructor(new Type[] {typeof(string), typeof(TreeNode[])}); TreeNode[] nodesArray = new TreeNode[node.Nodes.Count]; node.Nodes.CopyTo(nodesArray, 0); args = new object[] {node.Text, nodesArray}; } } else { if (node.Nodes.Count == 0) { info = typeof(TreeNode).GetConstructor(new Type[] { typeof(string), typeof(int), typeof(int)}); args = new object[] { node.Text, node.ImageIndex, node.SelectedImageIndex}; } else { info = typeof(TreeNode).GetConstructor(new Type[] { typeof(string), typeof(int), typeof(int), typeof(TreeNode[])}); TreeNode[] nodesArray = new TreeNode[node.Nodes.Count]; node.Nodes.CopyTo(nodesArray, 0); args = new object[] { node.Text, node.ImageIndex, node.SelectedImageIndex, nodesArray}; } } if (info != null) { return new InstanceDescriptor(info, args, false); } } return base.ConvertTo(context, culture, value, destinationType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SmtpNegotiateAuthenticationModule.cs
- ReliableChannelListener.cs
- LinkLabel.cs
- MemberCollection.cs
- FolderLevelBuildProvider.cs
- ColumnHeaderConverter.cs
- AvTraceFormat.cs
- LinqDataView.cs
- TypeSystem.cs
- HtmlLink.cs
- SafeCryptoKeyHandle.cs
- SoundPlayer.cs
- LambdaCompiler.Binary.cs
- WhiteSpaceTrimStringConverter.cs
- DataGridViewAccessibleObject.cs
- Point4D.cs
- XmlWriterTraceListener.cs
- DynamicMethod.cs
- AncestorChangedEventArgs.cs
- KeyTimeConverter.cs
- DataBindingList.cs
- ResourceReader.cs
- XPathAncestorQuery.cs
- TextSelection.cs
- FlowLayoutPanel.cs
- DbDataReader.cs
- ThreadExceptionEvent.cs
- DBSqlParserColumn.cs
- ResXDataNode.cs
- NotifyParentPropertyAttribute.cs
- NameSpaceExtractor.cs
- FontStretch.cs
- KeyValuePair.cs
- Encoder.cs
- FilteredReadOnlyMetadataCollection.cs
- TemplatedMailWebEventProvider.cs
- COM2PictureConverter.cs
- StateDesigner.cs
- MatrixCamera.cs
- ArgumentValueSerializer.cs
- ApplicationException.cs
- TemplateKeyConverter.cs
- XmlSerializationReader.cs
- ScriptResourceMapping.cs
- StreamWriter.cs
- MetadataWorkspace.cs
- ElementHostPropertyMap.cs
- IsolationInterop.cs
- Control.cs
- ExecutionContext.cs
- StringFormat.cs
- PtsHelper.cs
- DateTimeOffsetAdapter.cs
- IInstanceTable.cs
- TimelineGroup.cs
- XPathExpr.cs
- Point.cs
- SerializableTypeCodeDomSerializer.cs
- DataBoundLiteralControl.cs
- SHA384.cs
- VectorAnimationBase.cs
- Roles.cs
- MailBnfHelper.cs
- XmlSchemaSimpleType.cs
- RelationshipConstraintValidator.cs
- SpotLight.cs
- QueryComponents.cs
- ListBase.cs
- ComponentCollection.cs
- XmlUrlResolver.cs
- ComplexTypeEmitter.cs
- SecurityContextSecurityTokenParameters.cs
- ContextInformation.cs
- DataControlReferenceCollection.cs
- LayoutEngine.cs
- Stylesheet.cs
- KeyedQueue.cs
- SoapClientProtocol.cs
- ScrollChrome.cs
- PermissionSetTriple.cs
- CodeMethodInvokeExpression.cs
- DeploymentSectionCache.cs
- SafeSecurityHelper.cs
- Int64Storage.cs
- TTSEvent.cs
- RC2CryptoServiceProvider.cs
- ApplicationTrust.cs
- LayoutTableCell.cs
- IdentityManager.cs
- SQLDoubleStorage.cs
- MenuItemCollectionEditorDialog.cs
- TextSelectionProcessor.cs
- NameValueConfigurationCollection.cs
- ServiceDescriptionReflector.cs
- XmlSchemaValidator.cs
- FileSystemInfo.cs
- DocumentCollection.cs
- ObservableDictionary.cs
- FreeFormDesigner.cs
- EncodingNLS.cs