Code:
                         / 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / DataFormats.cs / 1407647 / DataFormats.cs
                        
                        
                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
//  
//----------------------------------------------------------------------------- 
/* 
 */ 
namespace System.Windows.Forms {
    using System.Text; 
    using System.Configuration.Assemblies;
    using System.Diagnostics;
    using System;
    using System.ComponentModel; 
    using System.Runtime.InteropServices;
    using System.Globalization; 
 
    ///  
    ///  
    ///    Translates
    ///       between Win Forms text-based
    ///      formats and   32-bit signed integer-based
    ///       clipboard formats. Provides   methods to create new   formats and add 
    ///       them to the Windows Registry. 
    ///   
    public class DataFormats { 
        ///  
        ///  
        /// Specifies the standard ANSI text format. This  
        /// field is read-only. 
        ///  
        public static readonly string Text          = "Text"; 
        ///   
        ///  
        ///    Specifies the standard Windows Unicode text format. This
        ///      
        ///    field is read-only. 
        ///  
        public static readonly string UnicodeText   = "UnicodeText";
 
        ///  
        ///  
        ///    Specifies the Windows Device Independent Bitmap (DIB) 
        ///       format. This  
        ///       field is read-only.  
        ///  
        public static readonly string Dib           = "DeviceIndependentBitmap";
        ///   
        /// 
        /// Specifies a Windows bitmap format. This   field is read-only.  
        ///   
        public static readonly string Bitmap        = "Bitmap";
 
        ///  
        /// 
        ///    Specifies the Windows enhanced metafile format. This
        ///      field is read-only.  
        ///  
        public static readonly string EnhancedMetafile   = "EnhancedMetafile"; 
 
        ///  
        ///  
        ///    Specifies the Windows metafile format, which Win Forms
        ///       does not directly use. This  
        ///       field is read-only. 
        ///   
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] // Would be a breaking change to rename this
        public static readonly string MetafilePict  = "MetaFilePict"; 
 
        ///  
        ///  
        ///    Specifies the Windows symbolic link format, which Win
        ///       Forms does not directly use. This  
        ///       field is read-only. 
        ///   
        public static readonly string SymbolicLink          = "SymbolicLink";
 
        ///   
        /// 
        ///    Specifies the Windows data interchange format, which Win 
        ///       Forms does not directly use. This  
        ///       field is read-only. 
        ///  
        public static readonly string Dif           = "DataInterchangeFormat"; 
        ///   
        ///  
        ///    Specifies the Tagged Image File Format (TIFF), which Win
        ///       Forms does not directly use. This   
        ///       field is read-only. 
        ///  
        public static readonly string Tiff          = "TaggedImageFileFormat";
 
        ///  
        ///  
        ///    Specifies the standard Windows original equipment 
        ///       manufacturer (OEM) text format. This   field is read-only. 
        ///   
        public static readonly string OemText       = "OEMText";
        ///  
        /// 
        /// Specifies the Windows palette format. This   
        /// field is read-only. 
        ///   
        public static readonly string Palette       = "Palette"; 
        ///   
        /// 
        ///    Specifies the Windows pen data format, which consists of
        ///       pen strokes for handwriting software; Win Forms does not use this format. This
        ///      
        ///    field is read-only. 
        ///   
        public static readonly string PenData       = "PenData"; 
        ///   
        /// 
        ///    Specifies the Resource Interchange File Format (RIFF)
        ///       audio format, which Win Forms does not directly use. This   field is read-only. 
        ///   
        public static readonly string Riff          = "RiffAudio";
 
        ///   
        /// 
        ///    Specifies the wave audio format, which Win Forms does not 
        ///       directly use. This   field is read-only. 
        ///  
        public static readonly string WaveAudio          = "WaveAudio";
 
        ///  
        ///  
        ///    Specifies the Windows file drop format, which Win Forms 
        ///       does not directly use. This  
        ///       field is read-only.  
        ///  
        public static readonly string FileDrop         = "FileDrop";
        ///   
        /// 
        ///    Specifies the Windows culture format, which Win Forms does 
        ///       not directly use. This   field is read-only.  
        ///  
        public static readonly string Locale        = "Locale"; 
        ///  
        /// 
        ///    Specifies text consisting of HTML data. This 
        ///      field is read-only. 
        ///   
        public static readonly string Html          = "HTML Format"; 
        ///   
        /// 
        ///    Specifies text consisting of Rich Text Format (RTF) data. This
        ///      field is read-only. 
        ///   
        public static readonly string Rtf       = "Rich Text Format";
 
        ///   
        /// 
        ///    Specifies a comma-separated value (CSV) format, which is a 
        ///       common interchange format used by spreadsheets. This format is not used directly
        ///       by Win Forms. This  
        ///       field is read-only. 
        ///   
        public static readonly string CommaSeparatedValue           = "Csv";
 
        ///   
        /// 
        ///    Specifies the Win Forms string class format, which Win 
        ///       Forms uses to store string objects. This  
        ///       field is read-only. 
        ///  
        // I'm sure upper case "String" is a reserved word in some language that matters 
        public static readonly string StringFormat   = typeof(string).FullName;
        //C#r: public static readonly String CF_STRINGCLASS   = typeof(String).Name; 
 
        ///  
        ///  
        ///    Specifies a format that encapsulates any type of Win Forms
        ///       object. This   field is read-only. 
        ///  
        public static readonly string Serializable     = Application.WindowsFormsVersion + "PersistentObject"; 
 
        private static Format[] formatList; 
        private static int formatCount = 0;
 
        private static object internalSyncObject = new object();
        // not creatable...
        // 
        private DataFormats() {
        } 
 
        ///  
        ///  
        /// Gets a   with the Windows Clipboard numeric ID and name for the specified format. 
        ///  
        public static Format GetFormat(string format) {
            lock(internalSyncObject) { 
                EnsurePredefined();
 
                // It is much faster to do a case sensitive search here.  So do 
                // the case sensitive compare first, then the expensive one.
                // 
                for (int n = 0; n < formatCount; n++) {
                    if (formatList[n].Name.Equals(format))
                        return formatList[n];
                } 
                for (int n = 0; n < formatCount; n++) { 
                    if (String.Equals(formatList[n].Name, format, StringComparison.OrdinalIgnoreCase)) 
                        return formatList[n];
                } 
                // need to add this format string
                //
                int formatId = SafeNativeMethods.RegisterClipboardFormat(format); 
                if (0 == formatId) {
                    throw new Win32Exception(Marshal.GetLastWin32Error(), SR.GetString(SR.RegisterCFFailed)); 
                } 
 
                EnsureFormatSpace(1);
                formatList[formatCount] = new Format(format, formatId);
                return formatList[formatCount++];
            } 
        }
 
        ///   
        /// 
        /// Gets a   with the Windows Clipboard numeric 
        ///    ID and name for the specified ID. 
        ///  
        public static Format GetFormat(int id) {
            return InternalGetFormat( null, id ); 
        }
 
        ///   
        /// 
        ///     Allows a the new format name to be specified if the requested format is not 
        ///     in the list
        ///  
        ///  
        private static Format InternalGetFormat(string strName, int id) { 
            lock(internalSyncObject) {
                EnsurePredefined(); 
 
                for (int n = 0; n < formatCount; n++) {
                    if (formatList[n].Id == id) 
                        return formatList[n];
                }
                StringBuilder s = new StringBuilder(128); 
                // This can happen if windows adds a standard format that we don't know about, 
                // so we should play it safe. 
                //
                if (0 == SafeNativeMethods.GetClipboardFormatName(id, s, s.Capacity)) { 
                    s.Length = 0;
                    if (strName == null) {
                        s.Append( "Format" ).Append( id );
                    } 
                    else {
                        s.Append( strName ); 
                    } 
                }
 
                EnsureFormatSpace(1);
                formatList[formatCount] = new Format(s.ToString(), id);
                return formatList[formatCount++]; 
            }
        } 
 
        ///   
        /// 
        ///     ensures that we have enough room in our format list
        ///  
        ///   
        private static void EnsureFormatSpace(int size) {
            if (null == formatList || formatList.Length <= formatCount + size) { 
                int newSize = formatCount + 20; 
                Format[] newList = new Format[newSize]; 
                for (int n = 0; n < formatCount; n++) {
                    newList[n] = formatList[n];
                } 
                formatList = newList;
            } 
        } 
        ///   
        /// 
        ///     ensures that the Win32 predefined formats are setup in our format list.  This
        ///     is called anytime we need to search the list
        ///   
        ///  
        private static void EnsurePredefined() { 
 
            if (0 == formatCount) {
 
                /* not used
                int standardText;
                // We must handle text differently for Win 95 and NT.  We should put 
                // UnicodeText on the clipboard for NT, and Text for Win 95.
                // So, we figure it out here theh first time someone asks for format info 
                // 
                if (1 == Marshal.SystemDefaultCharSize) {
                    standardText = NativeMethods.CF_TEXT; 
                }
                else {
                    standardText = NativeMethods.CF_UNICODETEXT;
                } 
                */
 
                formatList = new Format [] { 
                    //         Text name        Win32 format ID      Data stored as a Win32 handle?
                    new Format(UnicodeText,  NativeMethods.CF_UNICODETEXT), 
                    new Format(Text,         NativeMethods.CF_TEXT),
                    new Format(Bitmap,       NativeMethods.CF_BITMAP),
                    new Format(MetafilePict, NativeMethods.CF_METAFILEPICT),
                    new Format(EnhancedMetafile,  NativeMethods.CF_ENHMETAFILE), 
                    new Format(Dif,          NativeMethods.CF_DIF),
                    new Format(Tiff,         NativeMethods.CF_TIFF), 
                    new Format(OemText,      NativeMethods.CF_OEMTEXT), 
                    new Format(Dib,          NativeMethods.CF_DIB),
                    new Format(Palette,      NativeMethods.CF_PALETTE), 
                    new Format(PenData,      NativeMethods.CF_PENDATA),
                    new Format(Riff,         NativeMethods.CF_RIFF),
                    new Format(WaveAudio,    NativeMethods.CF_WAVE),
                    new Format(SymbolicLink, NativeMethods.CF_SYLK), 
                    new Format(FileDrop,     NativeMethods.CF_HDROP),
                    new Format(Locale,       NativeMethods.CF_LOCALE) 
                }; 
                formatCount = formatList.Length; 
            }
        }
        ///   
        /// 
        ///    Represents a format type.  
        ///   
        public class Format {
            readonly string name; 
            readonly int id;
            ///  
            ///  
            ///    
            ///       Specifies the 
            ///       name of this format. This field is read-only. 
            ///
            ///      
            ///  
            public string Name {
                get {
                    return name; 
                }
            } 
 
            ///  
            ///  
            ///    
            ///       Specifies the ID
            ///       number for this format. This field is read-only.
            ///      
            ///  
            public int Id { 
                get { 
                    return id;
                } 
            }
            ///  
            ///  
            /// Initializes a new instance of the   class and specifies whether a
            ///   
            /// handle is expected with this format.  
            ///  
            public Format(string name, int id) { 
                this.name = name;
                this.id = id;
            }
        } 
    }
} 
// 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
- MimeTypePropertyAttribute.cs
 - TemplatedAdorner.cs
 - AnalyzedTree.cs
 - EnlistmentState.cs
 - DashStyles.cs
 - GridViewUpdateEventArgs.cs
 - TagNameToTypeMapper.cs
 - TimeIntervalCollection.cs
 - ExpressionBindingCollection.cs
 - SchemaImporter.cs
 - CombinedTcpChannel.cs
 - ToolStripContainer.cs
 - DebugView.cs
 - WeakReferenceList.cs
 - LogLogRecordHeader.cs
 - AxisAngleRotation3D.cs
 - PerformanceCounterLib.cs
 - CalendarDateChangedEventArgs.cs
 - CompositeActivityValidator.cs
 - TraceFilter.cs
 - WebAdminConfigurationHelper.cs
 - TextSelection.cs
 - Wizard.cs
 - ConsoleKeyInfo.cs
 - BinaryMethodMessage.cs
 - SmiRequestExecutor.cs
 - ExclusiveTcpTransportManager.cs
 - StylusPlugin.cs
 - SizeConverter.cs
 - SyndicationPerson.cs
 - InputScopeConverter.cs
 - CreateUserWizardAutoFormat.cs
 - Color.cs
 - ColumnCollection.cs
 - GridViewRowPresenter.cs
 - SQLInt64Storage.cs
 - RegexMatchCollection.cs
 - NestPullup.cs
 - DynamicPhysicalDiscoSearcher.cs
 - Menu.cs
 - IntPtr.cs
 - AtomicFile.cs
 - GlyphsSerializer.cs
 - ResolveNameEventArgs.cs
 - RewritingValidator.cs
 - COM2TypeInfoProcessor.cs
 - JsonMessageEncoderFactory.cs
 - TextWriter.cs
 - InputBinder.cs
 - FontSourceCollection.cs
 - ColorPalette.cs
 - DbDataReader.cs
 - TextProperties.cs
 - WindowPatternIdentifiers.cs
 - SqlDataSourceConfigureSortForm.cs
 - PreviewKeyDownEventArgs.cs
 - UIElementParaClient.cs
 - DispatchWrapper.cs
 - RedirectionProxy.cs
 - ClientConfigurationHost.cs
 - LinqDataSourceView.cs
 - VariableElement.cs
 - StatusBar.cs
 - UrlAuthFailureHandler.cs
 - Matrix3DConverter.cs
 - PropertyGeneratedEventArgs.cs
 - CollectionConverter.cs
 - Win32.cs
 - DuplicateContext.cs
 - XmlBinaryReader.cs
 - MimeBasePart.cs
 - FontFamily.cs
 - UnsafeNativeMethods.cs
 - Trace.cs
 - QilName.cs
 - DynamicArgumentDialog.cs
 - WebPartConnectionsCancelVerb.cs
 - RenameRuleObjectDialog.Designer.cs
 - ExpressionVisitorHelpers.cs
 - SchemaManager.cs
 - StringAttributeCollection.cs
 - LinqDataSourceStatusEventArgs.cs
 - RtfToXamlLexer.cs
 - PageContentAsyncResult.cs
 - DataGridRelationshipRow.cs
 - RuntimeConfig.cs
 - ConfigurationValidatorAttribute.cs
 - DrawingAttributesDefaultValueFactory.cs
 - CompensationExtension.cs
 - LinqDataSourceDeleteEventArgs.cs
 - WebControlsSection.cs
 - TrackingStringDictionary.cs
 - XamlFxTrace.cs
 - AutoCompleteStringCollection.cs
 - SymmetricCryptoHandle.cs
 - TabItemAutomationPeer.cs
 - SpeechEvent.cs
 - PostBackTrigger.cs
 - InternalBufferManager.cs
 - DataGridParentRows.cs