FontEditor.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / Drawing / System / Drawing / Design / FontEditor.cs / 1 / FontEditor.cs

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

/* 
 */ 
namespace System.Drawing.Design {
 
    using System.Runtime.InteropServices;

    using System.Diagnostics;
 
    using System;
    using System.ComponentModel; 
    using Microsoft.Win32; 
    using System.Drawing;
    using System.Windows.Forms; 
    using System.Windows.Forms.Design;

    /// 
    ///  
    ///     Provides a font editor that
    ///       is used to visually select and configure a Font 
    ///       object. 
    /// 
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 
    [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.InheritanceDemand, Name="FullTrust")]
    [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Name="FullTrust")]
    public class FontEditor : UITypeEditor {
 
        private FontDialog fontDialog;
        private object     value; 
 
        /// 
        ///  
        ///      Edits the given object value using the editor style provided by
        ///      GetEditorStyle.  A service provider is provided so that any
        ///      required editing services can be obtained.
        ///  
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) {
 
            this.value = value; 

            Debug.Assert(provider != null, "No service provider; we cannot edit the value"); 
            if (provider != null) {
                IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

                Debug.Assert(edSvc != null, "No editor service; we cannot edit the value"); 
                if (edSvc != null) {
                    if (fontDialog == null) { 
                        fontDialog = new FontDialog(); 
                        fontDialog.ShowApply = false;
                        fontDialog.ShowColor = false; 
                        fontDialog.AllowVerticalFonts = false;
                    }

                    Font fontvalue = value as Font; 
                    if (fontvalue != null) {
                        fontDialog.Font = fontvalue; 
                    } 

                    IntPtr hwndFocus = UnsafeNativeMethods.GetFocus(); 
                    try {
                        if (fontDialog.ShowDialog() == DialogResult.OK) {
                            this.value = fontDialog.Font;
                        } 
                    }
                    finally { 
                        if (hwndFocus != IntPtr.Zero) { 
                            UnsafeNativeMethods.SetFocus(new HandleRef(null, hwndFocus));
                        } 
                    }
                }
            }
 
            // Now pull out the updated value, if there was one.
            // 
            value = this.value; 
            this.value = null;
 
            return value;
        }

        ///  
        /// 
        ///      Retrieves the editing style of the Edit method.  If the method 
        ///      is not supported, this will return None. 
        /// 
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { 
            return UITypeEditorEditStyle.Modal;
        }
    }
} 


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


                        

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