Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / ImageIndexEditor.cs / 1 / ImageIndexEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.Design.ImageIndexEditor..ctor()")] namespace System.Windows.Forms.Design { using System.Runtime.Serialization.Formatters; using System.Runtime.InteropServices; using System.ComponentModel; using System.Diagnostics; using System; using System.Windows.Forms; using System.Drawing; using System.Drawing.Design; using System.ComponentModel.Design; using Microsoft.Win32; using System.Windows.Forms.Design; using System.Windows.Forms.ComponentModel; ////// /// internal class ImageIndexEditor : UITypeEditor { protected ImageList currentImageList; protected PropertyDescriptor currentImageListProp; protected object currentInstance; protected UITypeEditor imageEditor; protected string parentImageListProperty = "Parent"; protected string imageListPropertyName = null; ///Provides an editor for visually picking an image index. ////// /// public ImageIndexEditor() { // Get the type editor for images. We use the properties on // this to determine if we support value painting, etc. // imageEditor = (UITypeEditor)TypeDescriptor.GetEditor(typeof(Image), typeof(UITypeEditor)); } internal UITypeEditor ImageEditor { get { return imageEditor; } } internal string ParentImageListProperty { get { return parentImageListProperty; } } ///Initializes a new instance of the ///class. /// /// Retrieves an image for the current context at current index. /// protected virtual Image GetImage(ITypeDescriptorContext context, int index, string key, bool useIntIndex) { Image image = null; object instance = context.Instance; if(instance is object[]) { // we would not know what to do in this case anyway (i.e. multiple selection of objects) return null; } // If the instances are different, then we need to re-aquire our image list. // if ((index >= 0) || (key != null)) { if (currentImageList == null || instance != currentInstance || (currentImageListProp != null && (ImageList)currentImageListProp.GetValue(currentInstance) != currentImageList)) { currentInstance = instance; // first look for an attribute PropertyDescriptor imageListProp = ImageListUtils.GetImageListProperty(context.PropertyDescriptor, ref instance); // not found as an attribute, do the old behavior while(instance != null && imageListProp == null) { PropertyDescriptorCollection props = TypeDescriptor.GetProperties(instance); foreach (PropertyDescriptor prop in props) { if (typeof(ImageList).IsAssignableFrom(prop.PropertyType)) { imageListProp = prop; break; } } if (imageListProp == null) { // We didn't find the image list in this component. See if the // component has a "parent" property. If so, walk the tree... // PropertyDescriptor parentProp = props[ParentImageListProperty]; if (parentProp != null) { instance = parentProp.GetValue(instance); } else { // Stick a fork in us, we're done. // instance = null; } } } if (imageListProp != null) { currentImageList = (ImageList)imageListProp.GetValue(instance); currentImageListProp = imageListProp; currentInstance = instance; } } if (currentImageList != null) { if (useIntIndex) { if (currentImageList != null && index < currentImageList.Images.Count) { index = (index > 0) ? index : 0; image = currentImageList.Images[index]; } } else { image = currentImageList.Images[key]; } } else { // no image list, no image image = null; } } return image; } ////// /// public override bool GetPaintValueSupported(ITypeDescriptorContext context) { if (imageEditor != null) { return imageEditor.GetPaintValueSupported(context); } return false; } ///Gets a value indicating whether this editor supports the painting of a representation /// of an object's value. ////// /// public override void PaintValue(PaintValueEventArgs e) { if (ImageEditor != null){ Image image = null; if (e.Value is int) { image = GetImage(e.Context, (int)e.Value, null, true); } else if (e.Value is string) { image = GetImage(e.Context, -1, (string)e.Value, false); } if (image != null) { ImageEditor.PaintValue(new PaintValueEventArgs(e.Context, image, e.Graphics, e.Bounds)); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved./// Paints a representative value of the given object to the provided /// canvas. Painting should be done within the boundaries of the /// provided rectangle. /// ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ImageField.cs
- DragDrop.cs
- DbTransaction.cs
- Transactions.cs
- ParserExtension.cs
- HttpServerProtocol.cs
- TimeSpanSecondsConverter.cs
- AdapterDictionary.cs
- SrgsToken.cs
- ResolveCriteriaApril2005.cs
- _AcceptOverlappedAsyncResult.cs
- StringDictionaryWithComparer.cs
- CorrelationResolver.cs
- TextServicesProperty.cs
- UriTemplateTrieLocation.cs
- PnrpPeerResolverElement.cs
- _DigestClient.cs
- AnnotationDocumentPaginator.cs
- WorkflowMarkupElementEventArgs.cs
- Parser.cs
- ListViewInsertEventArgs.cs
- InheritedPropertyChangedEventArgs.cs
- IconBitmapDecoder.cs
- SqlDataSourceConnectionPanel.cs
- XmlUTF8TextReader.cs
- SubstitutionDesigner.cs
- ExtendedPropertyCollection.cs
- SoapInteropTypes.cs
- UIElement3D.cs
- Debug.cs
- ThicknessAnimationUsingKeyFrames.cs
- XPathAxisIterator.cs
- TextAutomationPeer.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- SqlUtils.cs
- XmlValidatingReaderImpl.cs
- ObjectMemberMapping.cs
- TypefaceCollection.cs
- ListViewGroupItemCollection.cs
- FilePrompt.cs
- OleDbParameter.cs
- PocoPropertyAccessorStrategy.cs
- ExtendedPropertyCollection.cs
- AssemblyNameProxy.cs
- ToolBarButton.cs
- WindowPatternIdentifiers.cs
- Debugger.cs
- DrawingCollection.cs
- HtmlInputButton.cs
- Model3D.cs
- FormViewUpdatedEventArgs.cs
- AsymmetricAlgorithm.cs
- FrameworkContentElement.cs
- ServerProtocol.cs
- RenamedEventArgs.cs
- EventBookmark.cs
- HtmlInputCheckBox.cs
- OrthographicCamera.cs
- Span.cs
- HttpSysSettings.cs
- ProcessStartInfo.cs
- SecurityCookieModeValidator.cs
- DBConnectionString.cs
- CookielessData.cs
- WmlCommandAdapter.cs
- DtrList.cs
- HttpSocketManager.cs
- MexHttpsBindingElement.cs
- Selection.cs
- HostingEnvironmentException.cs
- BamlRecords.cs
- SHA512.cs
- TaiwanCalendar.cs
- XmlSchemaSubstitutionGroup.cs
- AlternateView.cs
- StateWorkerRequest.cs
- DocumentStatusResources.cs
- DecimalKeyFrameCollection.cs
- QilExpression.cs
- DocumentApplicationJournalEntry.cs
- JsonGlobals.cs
- EmptyControlCollection.cs
- BufferedGraphicsContext.cs
- ExceptionHandlersDesigner.cs
- TransformCryptoHandle.cs
- ProfileEventArgs.cs
- ProviderException.cs
- WmfPlaceableFileHeader.cs
- ToolStripSplitStackLayout.cs
- AutomationPropertyInfo.cs
- DataConnectionHelper.cs
- WebPartsSection.cs
- DocumentViewerBase.cs
- XamlTypeMapperSchemaContext.cs
- JpegBitmapDecoder.cs
- HashAlgorithm.cs
- figurelengthconverter.cs
- BasicCellRelation.cs
- XamlSerializerUtil.cs
- CopyOfAction.cs