Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / TreeNodeConverter.cs / 1 / 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 {
///
///
/// Gets a value indicating whether this converter can
/// convert an object to the given destination type using the context.
///
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
if (destinationType == typeof(InstanceDescriptor)) {
return true;
}
return base.CanConvertTo(context, destinationType);
}
///
///
/// 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.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Boolean.cs
- KeyBinding.cs
- DeclarationUpdate.cs
- DynamicMethod.cs
- DateTimeOffset.cs
- RandomNumberGenerator.cs
- Processor.cs
- LayoutEvent.cs
- RegistryKey.cs
- EpmContentDeSerializerBase.cs
- WebContext.cs
- SqlExpander.cs
- ComEventsInfo.cs
- ValidateNames.cs
- DesignerDataRelationship.cs
- StructuredProperty.cs
- WorkflowControlClient.cs
- CharacterBuffer.cs
- Panel.cs
- EventsTab.cs
- SerialErrors.cs
- CredentialCache.cs
- EntityDataSourceViewSchema.cs
- DbModificationClause.cs
- NameValueConfigurationElement.cs
- PowerStatus.cs
- RouteParser.cs
- ServiceTimeoutsBehavior.cs
- TimeZoneNotFoundException.cs
- InternalBufferOverflowException.cs
- DBAsyncResult.cs
- CultureMapper.cs
- QilPatternFactory.cs
- ApplicationHost.cs
- OptimizerPatterns.cs
- DateTimeStorage.cs
- TrackBarRenderer.cs
- RayMeshGeometry3DHitTestResult.cs
- NonSerializedAttribute.cs
- Exceptions.cs
- WorkflowMarkupSerializationException.cs
- UnitySerializationHolder.cs
- DBConnectionString.cs
- EdmSchemaAttribute.cs
- SecurityPolicySection.cs
- EntityProviderServices.cs
- ChannelSinkStacks.cs
- ProgressBarRenderer.cs
- SessionStateSection.cs
- AQNBuilder.cs
- CompiledXpathExpr.cs
- SemanticResolver.cs
- ProgressPage.cs
- OutputCacheModule.cs
- TagPrefixAttribute.cs
- DataGridTextBox.cs
- SqlMultiplexer.cs
- NativeMethodsCLR.cs
- BeginEvent.cs
- ObjectDataSourceView.cs
- AvtEvent.cs
- connectionpool.cs
- ActionFrame.cs
- CallSiteHelpers.cs
- RuleSettingsCollection.cs
- XmlSignatureProperties.cs
- ListBoxItem.cs
- XPathCompileException.cs
- UnsafeNativeMethods.cs
- AttributeEmitter.cs
- SoapExtensionTypeElement.cs
- SHA512.cs
- CompilerTypeWithParams.cs
- HMACSHA1.cs
- PartialList.cs
- ServicesUtilities.cs
- ELinqQueryState.cs
- RowSpanVector.cs
- BooleanExpr.cs
- SessionStateUtil.cs
- OdbcConnectionFactory.cs
- PersistenceException.cs
- OleDbStruct.cs
- InstanceView.cs
- IRCollection.cs
- TypeExtensions.cs
- InputLangChangeRequestEvent.cs
- RadioButtonList.cs
- SQLMoneyStorage.cs
- _Events.cs
- ProcessRequestArgs.cs
- SmtpLoginAuthenticationModule.cs
- RequestBringIntoViewEventArgs.cs
- MenuItemAutomationPeer.cs
- DataControlFieldCollection.cs
- HyperLinkColumn.cs
- mediaeventshelper.cs
- ConstructorNeedsTagAttribute.cs
- PrintEvent.cs
- QuestionEventArgs.cs