OwnerDrawPropertyBag.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / OwnerDrawPropertyBag.cs / 1 / OwnerDrawPropertyBag.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Windows.Forms { 
 
    using System.Diagnostics;
    using System; 
    using System.Drawing;
    using System.Diagnostics.CodeAnalysis;
    using System.Windows.Forms.Internal;
    using System.Windows.Forms; 
    using Microsoft.Win32;
    using System.Runtime.Serialization; 
    using System.Runtime.Serialization.Formatters; 
    using System.Security.Permissions;
 

    /// 
    /// 
    /// 
    ///     Class used to pass new font/color information around for "partial" ownerdraw list/treeview items.
    ///  
    ///  
    //
    [SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly")] 
    [Serializable]
    public class OwnerDrawPropertyBag : MarshalByRefObject, ISerializable {
        Font font = null;
        Color foreColor = Color.Empty; 
        Color backColor = Color.Empty;
        Control.FontHandleWrapper fontWrapper = null; 
        private static object internalSyncObject = new object(); 
          /**
         * Constructor used in deserialization 
         * Has to be protected because OwnerDrawPropertyBag is not sealed. FxCop Rule CA2229.
         */
        protected OwnerDrawPropertyBag(SerializationInfo info, StreamingContext context) {
            foreach (SerializationEntry entry in info) { 
                if (entry.Name == "Font") {
                    // SEC 
                    font = (Font) entry.Value; 
                }
                else if (entry.Name =="ForeColor") { 
                    // SEC
                    foreColor =(Color)entry.Value;
                }
                else if (entry.Name =="BackColor") { 
                    // SEC
                    backColor = (Color)entry.Value; 
                } 
            }
        } 

        internal OwnerDrawPropertyBag(){
        }
 
        /// 
        ///  
        ///    [To be supplied.] 
        /// 
        public Font Font { 
            get {
                return font;
            }
            set { 
                font = value;
            } 
        } 

        ///  
        /// 
        ///    [To be supplied.]
        /// 
        public Color ForeColor { 
            get {
                return foreColor; 
            } 
            set {
                foreColor = value; 
            }
        }

        ///  
        /// 
        ///    [To be supplied.] 
        ///  
        public Color BackColor {
            get { 
                return backColor;
            }
            set {
                backColor = value; 
            }
        } 
 
        internal IntPtr FontHandle {
            get { 
                if (fontWrapper == null) {
                    fontWrapper = new Control.FontHandleWrapper(Font);
                }
                return fontWrapper.Handle; 
            }
        } 
 
        /// 
        ///  
        ///     Returns whether or not this property bag contains all default values (is empty)
        /// 
        public virtual bool IsEmpty() {
            return (Font == null && foreColor.IsEmpty && backColor.IsEmpty); 
        }
 
        ///  
        /// 
        ///     Copies the bag. Always returns a valid ODPB object 
        /// 
        public static OwnerDrawPropertyBag Copy(OwnerDrawPropertyBag value) {
            lock(internalSyncObject) {
                OwnerDrawPropertyBag ret = new OwnerDrawPropertyBag(); 
                if (value == null) return ret;
                ret.backColor = value.backColor; 
                ret.foreColor = value.foreColor; 
                ret.Font = value.font;
                return ret; 
            }
        }

        ///  
        /// 
        /// ISerializable private implementation 
        ///  
        /// 
        [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)] 
        void ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) {
            si.AddValue("BackColor", BackColor);
            si.AddValue("ForeColor", ForeColor);
            si.AddValue("Font", Font); 
        }
 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Windows.Forms { 
 
    using System.Diagnostics;
    using System; 
    using System.Drawing;
    using System.Diagnostics.CodeAnalysis;
    using System.Windows.Forms.Internal;
    using System.Windows.Forms; 
    using Microsoft.Win32;
    using System.Runtime.Serialization; 
    using System.Runtime.Serialization.Formatters; 
    using System.Security.Permissions;
 

    /// 
    /// 
    /// 
    ///     Class used to pass new font/color information around for "partial" ownerdraw list/treeview items.
    ///  
    ///  
    //
    [SuppressMessage("Microsoft.Usage", "CA2240:ImplementISerializableCorrectly")] 
    [Serializable]
    public class OwnerDrawPropertyBag : MarshalByRefObject, ISerializable {
        Font font = null;
        Color foreColor = Color.Empty; 
        Color backColor = Color.Empty;
        Control.FontHandleWrapper fontWrapper = null; 
        private static object internalSyncObject = new object(); 
          /**
         * Constructor used in deserialization 
         * Has to be protected because OwnerDrawPropertyBag is not sealed. FxCop Rule CA2229.
         */
        protected OwnerDrawPropertyBag(SerializationInfo info, StreamingContext context) {
            foreach (SerializationEntry entry in info) { 
                if (entry.Name == "Font") {
                    // SEC 
                    font = (Font) entry.Value; 
                }
                else if (entry.Name =="ForeColor") { 
                    // SEC
                    foreColor =(Color)entry.Value;
                }
                else if (entry.Name =="BackColor") { 
                    // SEC
                    backColor = (Color)entry.Value; 
                } 
            }
        } 

        internal OwnerDrawPropertyBag(){
        }
 
        /// 
        ///  
        ///    [To be supplied.] 
        /// 
        public Font Font { 
            get {
                return font;
            }
            set { 
                font = value;
            } 
        } 

        ///  
        /// 
        ///    [To be supplied.]
        /// 
        public Color ForeColor { 
            get {
                return foreColor; 
            } 
            set {
                foreColor = value; 
            }
        }

        ///  
        /// 
        ///    [To be supplied.] 
        ///  
        public Color BackColor {
            get { 
                return backColor;
            }
            set {
                backColor = value; 
            }
        } 
 
        internal IntPtr FontHandle {
            get { 
                if (fontWrapper == null) {
                    fontWrapper = new Control.FontHandleWrapper(Font);
                }
                return fontWrapper.Handle; 
            }
        } 
 
        /// 
        ///  
        ///     Returns whether or not this property bag contains all default values (is empty)
        /// 
        public virtual bool IsEmpty() {
            return (Font == null && foreColor.IsEmpty && backColor.IsEmpty); 
        }
 
        ///  
        /// 
        ///     Copies the bag. Always returns a valid ODPB object 
        /// 
        public static OwnerDrawPropertyBag Copy(OwnerDrawPropertyBag value) {
            lock(internalSyncObject) {
                OwnerDrawPropertyBag ret = new OwnerDrawPropertyBag(); 
                if (value == null) return ret;
                ret.backColor = value.backColor; 
                ret.foreColor = value.foreColor; 
                ret.Font = value.font;
                return ret; 
            }
        }

        ///  
        /// 
        /// ISerializable private implementation 
        ///  
        /// 
        [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)] 
        void ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) {
            si.AddValue("BackColor", BackColor);
            si.AddValue("ForeColor", ForeColor);
            si.AddValue("Font", Font); 
        }
 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK