TextBoxAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Automation / Peers / TextBoxAutomationPeer.cs / 1 / TextBoxAutomationPeer.cs

                            using System; 
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Text; 
using System.Windows;
using System.Windows.Automation.Provider; 
using System.Windows.Controls; 
using System.Windows.Controls.Primitives;
using System.Windows.Interop; 
using System.Windows.Media;
using System.Windows.Documents;

using MS.Internal; 
using MS.Win32;
 
namespace System.Windows.Automation.Peers 
{
    /// 
    public class TextBoxAutomationPeer : TextAutomationPeer, IValueProvider
    {
        ///
        public TextBoxAutomationPeer(TextBox owner): base(owner) 
        {}
 
        /// 
        override protected string GetClassNameCore()
        { 
            return "TextBox";
        }

        /// 
        override protected AutomationControlType GetAutomationControlTypeCore()
        { 
            return AutomationControlType.Edit; 
        }
 
        ///
        override public object GetPattern(PatternInterface patternInterface)
        {
            object returnValue = null; 

            if(patternInterface == PatternInterface.Value) 
                returnValue = this; 

            if (patternInterface == PatternInterface.Text) 
            {
                returnValue = new MS.Internal.Automation.TextAdaptor(this, ((TextBoxBase)Owner).TextContainer);
            }
 
            if (patternInterface == PatternInterface.Scroll)
            { 
                TextBox owner = (TextBox)Owner; 
                if (owner.ScrollViewer != null)
                { 
                    returnValue = owner.ScrollViewer.CreateAutomationPeer();
                    ((AutomationPeer)returnValue).EventsSource = this;
                }
            } 

            return returnValue; 
        } 

        bool IValueProvider.IsReadOnly 
        {
            get
            {
                TextBox owner = (TextBox)Owner; 
                return owner.IsReadOnly;
            } 
        } 

        string IValueProvider.Value 
        {
            get
            {
                TextBox owner = (TextBox)Owner; 
                return owner.Text;
            } 
        } 

        void IValueProvider.SetValue(string value) 
        {
            if(!IsEnabled())
                throw new ElementNotEnabledException();
 
            TextBox owner = (TextBox)Owner;
 
            if (owner.IsReadOnly) 
            {
                throw new ElementNotEnabledException(); 
            }
            if (value == null)
            {
                throw new ArgumentNullException("value"); 
            }
 
            owner.Text = value; 
        }
 
        //
        [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
        internal void RaiseValuePropertyChangedEvent(string oldValue, string newValue)
        { 
            if (oldValue != newValue)
            { 
                RaisePropertyChangedEvent(ValuePatternIdentifiers.ValueProperty, oldValue, newValue); 
            }
        } 

        //
        [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
        internal void RaiseIsReadOnlyPropertyChangedEvent(bool oldValue, bool newValue) 
        {
            if (oldValue != newValue) 
            { 
                RaisePropertyChangedEvent(ValuePatternIdentifiers.IsReadOnlyProperty, oldValue, newValue);
            } 
        }

        /// 
        /// Gets collection of AutomationPeers for given text range. 
        /// 
        internal override List GetAutomationPeersFromRange(ITextPointer start, ITextPointer end) 
        { 
            return new List();
        } 
    }
}


// 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