Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / UserControl.cs / 1305376 / UserControl.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using Microsoft.Win32; using System; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Drawing; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.Security.Permissions; using System.Windows.Forms.Design; using System.Windows.Forms.Layout; ////// /// Represents an empty control that can be used in the Forms Designer to create other controls. By extending form, UserControl inherits all of /// the standard positioning and mnemonic handling code that is necessary /// in a user control. /// [ ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch), Designer("System.Windows.Forms.Design.UserControlDocumentDesigner, " + AssemblyRef.SystemDesign, typeof(IRootDesigner)), Designer("System.Windows.Forms.Design.ControlDesigner, " + AssemblyRef.SystemDesign), DesignerCategory("UserControl"), DefaultEvent("Load") ] public class UserControl : ContainerControl { private static readonly object EVENT_LOAD = new object(); private BorderStyle borderStyle = System.Windows.Forms.BorderStyle.None; ////// /// Creates a new UserControl object. A vast majority of people /// will not want to instantiate this class directly, but will be a /// sub-class of it. /// public UserControl() { SetScrollState(ScrollStateAutoScrolling, false); SetState(STATE_VISIBLE, true); SetState(STATE_TOPLEVEL, false); SetStyle(ControlStyles.SupportsTransparentBackColor, true); } ////// [Browsable(true), EditorBrowsable(EditorBrowsableState.Always), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public override bool AutoSize { get { return base.AutoSize; } set { base.AutoSize = value; } } ///Override to re-expose AutoSize. ////// [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public new event EventHandler AutoSizeChanged { add { base.AutoSizeChanged += value; } remove { base.AutoSizeChanged -= value; } } ///Re-expose AutoSizeChanged. ////// Allows the control to optionally shrink when AutoSize is true. /// [ SRDescription(SR.ControlAutoSizeModeDescr), SRCategory(SR.CatLayout), Browsable(true), DefaultValue(AutoSizeMode.GrowOnly), Localizable(true) ] public AutoSizeMode AutoSizeMode { get { return GetAutoSizeMode(); } set { if (!ClientUtils.IsEnumValid(value, (int)value, (int)AutoSizeMode.GrowAndShrink, (int)AutoSizeMode.GrowOnly)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(AutoSizeMode)); } if (GetAutoSizeMode() != value) { SetAutoSizeMode(value); Control toLayout = DesignMode || ParentInternal == null ? this : ParentInternal; if(toLayout != null) { // DefaultLayout does not keep anchor information until it needs to. When // AutoSize became a common property, we could no longer blindly call into // DefaultLayout, so now we do a special InitLayout just for DefaultLayout. if(toLayout.LayoutEngine == DefaultLayout.Instance) { toLayout.LayoutEngine.InitLayout(this, BoundsSpecified.Size); } LayoutTransaction.DoLayout(toLayout, this, PropertyNames.AutoSize); } } } } ////// /// Indicates whether controls in this container will be automatically validated when the focus changes. /// [ Browsable(true), EditorBrowsable(EditorBrowsableState.Always), ] public override AutoValidate AutoValidate { get { return base.AutoValidate; } set { base.AutoValidate = value; } } ////// /// [ Browsable(true), EditorBrowsable(EditorBrowsableState.Always), ] public new event EventHandler AutoValidateChanged { add { base.AutoValidateChanged += value; } remove { base.AutoValidateChanged -= value; } } ///[To be supplied.] ////// /// [ SRCategory(SR.CatAppearance), DefaultValue(BorderStyle.None), SRDescription(SR.UserControlBorderStyleDescr), Browsable(true), EditorBrowsable(EditorBrowsableState.Always) ] public BorderStyle BorderStyle { get { return borderStyle; } set { if (borderStyle != value) { //valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)BorderStyle.None, (int)BorderStyle.Fixed3D)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(BorderStyle)); } borderStyle = value; UpdateStyles(); } } } ////// Indicates the borderstyle for the UserControl. /// ////// /// /// Returns the parameters needed to create the handle. Inheriting classes /// can override this to provide extra functionality. They should not, /// however, forget to call base.getCreateParams() first to get the struct /// filled up with the basic info.This is required as we now need to pass the /// styles for appropriate BorderStyle that is set by the user. /// protected override CreateParams CreateParams { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] get { CreateParams cp = base.CreateParams; cp.ExStyle |= NativeMethods.WS_EX_CONTROLPARENT; cp.ExStyle &= (~NativeMethods.WS_EX_CLIENTEDGE); cp.Style &= (~NativeMethods.WS_BORDER); switch (borderStyle) { case BorderStyle.Fixed3D: cp.ExStyle |= NativeMethods.WS_EX_CLIENTEDGE; break; case BorderStyle.FixedSingle: cp.Style |= NativeMethods.WS_BORDER; break; } return cp; } } ////// /// The default size for this user control. /// protected override Size DefaultSize { get { return new Size(150, 150); } } ////// /// [SRCategory(SR.CatBehavior), SRDescription(SR.UserControlOnLoadDescr)] public event EventHandler Load { add { Events.AddHandler(EVENT_LOAD, value); } remove { Events.RemoveHandler(EVENT_LOAD, value); } } ///Occurs before the control becomes visible. ///[ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Bindable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public override string Text { get { return base.Text; } set { base.Text = value; } } /// /// [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] new public event EventHandler TextChanged { add { base.TextChanged += value; } remove { base.TextChanged -= value; } } /// /// /// Validates all selectable child controls in the container, including descendants. This is /// equivalent to calling ValidateChildren(ValidationConstraints.Selectable). See [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public override bool ValidateChildren() { return base.ValidateChildren(); } ////// for details of exactly which child controls will be validated. /// /// /// Validates all the child controls in the container. Exactly which controls are /// validated and which controls are skipped is determined by [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public override bool ValidateChildren(ValidationConstraints validationConstraints) { return base.ValidateChildren(validationConstraints); } private bool FocusInside() { if (!IsHandleCreated) return false; IntPtr hwndFocus = UnsafeNativeMethods.GetFocus(); if (hwndFocus == IntPtr.Zero) return false; IntPtr hwnd = Handle; if (hwnd == hwndFocus || SafeNativeMethods.IsChild(new HandleRef(this, hwnd), new HandleRef(null, hwndFocus))) return true; return false; } ///. /// /// /// [EditorBrowsable(EditorBrowsableState.Advanced)] protected override void OnCreateControl() { base.OnCreateControl(); OnLoad(EventArgs.Empty); } ///Raises the CreateControl event. ////// /// [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void OnLoad(EventArgs e) { // There is no good way to explain this event except to say // that it's just another name for OnControlCreated. EventHandler handler = (EventHandler)Events[EVENT_LOAD]; if (handler != null) handler(this,e); } ///The Load event is fired before the control becomes visible for the first time. ////// /// OnResize override to invalidate entire control in Stetch mode /// ///protected override void OnResize(EventArgs e) { base.OnResize(e); if (BackgroundImage != null) { Invalidate(); } } /// /// /// [EditorBrowsable(EditorBrowsableState.Advanced)] protected override void OnMouseDown(MouseEventArgs e) { if (!FocusInside()) FocusInternal(); base.OnMouseDown(e); } private void WmSetFocus(ref Message m) { if (!HostedInWin32DialogManager) { IntSecurity.ModifyFocus.Assert(); try { if (ActiveControl == null) SelectNextControl(null, true, true, true, false); } finally { System.Security.CodeAccessPermission.RevertAssert(); } } if (!ValidationCancelled) { base.WndProc(ref m); } } ///[To be supplied.] ////// /// [EditorBrowsable(EditorBrowsableState.Advanced)] [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] protected override void WndProc(ref Message m) { switch (m.Msg) { case NativeMethods.WM_SETFOCUS: WmSetFocus(ref m); break; default: base.WndProc(ref m); break; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using Microsoft.Win32; using System; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Drawing; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.Security.Permissions; using System.Windows.Forms.Design; using System.Windows.Forms.Layout; ////// /// Represents an empty control that can be used in the Forms Designer to create other controls. By extending form, UserControl inherits all of /// the standard positioning and mnemonic handling code that is necessary /// in a user control. /// [ ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch), Designer("System.Windows.Forms.Design.UserControlDocumentDesigner, " + AssemblyRef.SystemDesign, typeof(IRootDesigner)), Designer("System.Windows.Forms.Design.ControlDesigner, " + AssemblyRef.SystemDesign), DesignerCategory("UserControl"), DefaultEvent("Load") ] public class UserControl : ContainerControl { private static readonly object EVENT_LOAD = new object(); private BorderStyle borderStyle = System.Windows.Forms.BorderStyle.None; ////// /// Creates a new UserControl object. A vast majority of people /// will not want to instantiate this class directly, but will be a /// sub-class of it. /// public UserControl() { SetScrollState(ScrollStateAutoScrolling, false); SetState(STATE_VISIBLE, true); SetState(STATE_TOPLEVEL, false); SetStyle(ControlStyles.SupportsTransparentBackColor, true); } ////// [Browsable(true), EditorBrowsable(EditorBrowsableState.Always), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public override bool AutoSize { get { return base.AutoSize; } set { base.AutoSize = value; } } ///Override to re-expose AutoSize. ////// [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public new event EventHandler AutoSizeChanged { add { base.AutoSizeChanged += value; } remove { base.AutoSizeChanged -= value; } } ///Re-expose AutoSizeChanged. ////// Allows the control to optionally shrink when AutoSize is true. /// [ SRDescription(SR.ControlAutoSizeModeDescr), SRCategory(SR.CatLayout), Browsable(true), DefaultValue(AutoSizeMode.GrowOnly), Localizable(true) ] public AutoSizeMode AutoSizeMode { get { return GetAutoSizeMode(); } set { if (!ClientUtils.IsEnumValid(value, (int)value, (int)AutoSizeMode.GrowAndShrink, (int)AutoSizeMode.GrowOnly)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(AutoSizeMode)); } if (GetAutoSizeMode() != value) { SetAutoSizeMode(value); Control toLayout = DesignMode || ParentInternal == null ? this : ParentInternal; if(toLayout != null) { // DefaultLayout does not keep anchor information until it needs to. When // AutoSize became a common property, we could no longer blindly call into // DefaultLayout, so now we do a special InitLayout just for DefaultLayout. if(toLayout.LayoutEngine == DefaultLayout.Instance) { toLayout.LayoutEngine.InitLayout(this, BoundsSpecified.Size); } LayoutTransaction.DoLayout(toLayout, this, PropertyNames.AutoSize); } } } } ////// /// Indicates whether controls in this container will be automatically validated when the focus changes. /// [ Browsable(true), EditorBrowsable(EditorBrowsableState.Always), ] public override AutoValidate AutoValidate { get { return base.AutoValidate; } set { base.AutoValidate = value; } } ////// /// [ Browsable(true), EditorBrowsable(EditorBrowsableState.Always), ] public new event EventHandler AutoValidateChanged { add { base.AutoValidateChanged += value; } remove { base.AutoValidateChanged -= value; } } ///[To be supplied.] ////// /// [ SRCategory(SR.CatAppearance), DefaultValue(BorderStyle.None), SRDescription(SR.UserControlBorderStyleDescr), Browsable(true), EditorBrowsable(EditorBrowsableState.Always) ] public BorderStyle BorderStyle { get { return borderStyle; } set { if (borderStyle != value) { //valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)BorderStyle.None, (int)BorderStyle.Fixed3D)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(BorderStyle)); } borderStyle = value; UpdateStyles(); } } } ////// Indicates the borderstyle for the UserControl. /// ////// /// /// Returns the parameters needed to create the handle. Inheriting classes /// can override this to provide extra functionality. They should not, /// however, forget to call base.getCreateParams() first to get the struct /// filled up with the basic info.This is required as we now need to pass the /// styles for appropriate BorderStyle that is set by the user. /// protected override CreateParams CreateParams { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] get { CreateParams cp = base.CreateParams; cp.ExStyle |= NativeMethods.WS_EX_CONTROLPARENT; cp.ExStyle &= (~NativeMethods.WS_EX_CLIENTEDGE); cp.Style &= (~NativeMethods.WS_BORDER); switch (borderStyle) { case BorderStyle.Fixed3D: cp.ExStyle |= NativeMethods.WS_EX_CLIENTEDGE; break; case BorderStyle.FixedSingle: cp.Style |= NativeMethods.WS_BORDER; break; } return cp; } } ////// /// The default size for this user control. /// protected override Size DefaultSize { get { return new Size(150, 150); } } ////// /// [SRCategory(SR.CatBehavior), SRDescription(SR.UserControlOnLoadDescr)] public event EventHandler Load { add { Events.AddHandler(EVENT_LOAD, value); } remove { Events.RemoveHandler(EVENT_LOAD, value); } } ///Occurs before the control becomes visible. ///[ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Bindable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public override string Text { get { return base.Text; } set { base.Text = value; } } /// /// [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] new public event EventHandler TextChanged { add { base.TextChanged += value; } remove { base.TextChanged -= value; } } /// /// /// Validates all selectable child controls in the container, including descendants. This is /// equivalent to calling ValidateChildren(ValidationConstraints.Selectable). See [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public override bool ValidateChildren() { return base.ValidateChildren(); } ////// for details of exactly which child controls will be validated. /// /// /// Validates all the child controls in the container. Exactly which controls are /// validated and which controls are skipped is determined by [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] public override bool ValidateChildren(ValidationConstraints validationConstraints) { return base.ValidateChildren(validationConstraints); } private bool FocusInside() { if (!IsHandleCreated) return false; IntPtr hwndFocus = UnsafeNativeMethods.GetFocus(); if (hwndFocus == IntPtr.Zero) return false; IntPtr hwnd = Handle; if (hwnd == hwndFocus || SafeNativeMethods.IsChild(new HandleRef(this, hwnd), new HandleRef(null, hwndFocus))) return true; return false; } ///. /// /// /// [EditorBrowsable(EditorBrowsableState.Advanced)] protected override void OnCreateControl() { base.OnCreateControl(); OnLoad(EventArgs.Empty); } ///Raises the CreateControl event. ////// /// [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void OnLoad(EventArgs e) { // There is no good way to explain this event except to say // that it's just another name for OnControlCreated. EventHandler handler = (EventHandler)Events[EVENT_LOAD]; if (handler != null) handler(this,e); } ///The Load event is fired before the control becomes visible for the first time. ////// /// OnResize override to invalidate entire control in Stetch mode /// ///protected override void OnResize(EventArgs e) { base.OnResize(e); if (BackgroundImage != null) { Invalidate(); } } /// /// /// [EditorBrowsable(EditorBrowsableState.Advanced)] protected override void OnMouseDown(MouseEventArgs e) { if (!FocusInside()) FocusInternal(); base.OnMouseDown(e); } private void WmSetFocus(ref Message m) { if (!HostedInWin32DialogManager) { IntSecurity.ModifyFocus.Assert(); try { if (ActiveControl == null) SelectNextControl(null, true, true, true, false); } finally { System.Security.CodeAccessPermission.RevertAssert(); } } if (!ValidationCancelled) { base.WndProc(ref m); } } ///[To be supplied.] ////// /// [EditorBrowsable(EditorBrowsableState.Advanced)] [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode)] protected override void WndProc(ref Message m) { switch (m.Msg) { case NativeMethods.WM_SETFOCUS: WmSetFocus(ref m); break; default: base.WndProc(ref m); break; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlAttributes.cs
- SQLConvert.cs
- HtmlPageAdapter.cs
- SortQuery.cs
- SystemParameters.cs
- smtpconnection.cs
- Pair.cs
- XmlDataSource.cs
- StoryFragments.cs
- Clause.cs
- FieldNameLookup.cs
- TrustLevel.cs
- Ipv6Element.cs
- _LocalDataStore.cs
- ExceptionUtility.cs
- TransformedBitmap.cs
- CompositeFontFamily.cs
- SizeAnimationUsingKeyFrames.cs
- TextServicesDisplayAttribute.cs
- MessageHeaders.cs
- COMException.cs
- StrokeNodeEnumerator.cs
- TimeSpanStorage.cs
- DataGridViewColumn.cs
- SharedPersonalizationStateInfo.cs
- JsonReaderWriterFactory.cs
- VScrollBar.cs
- SystemWebSectionGroup.cs
- DirectoryGroupQuery.cs
- RenameRuleObjectDialog.cs
- ToolstripProfessionalRenderer.cs
- WinFormsComponentEditor.cs
- XmlSchemaRedefine.cs
- PnrpPeerResolverElement.cs
- SafeBitVector32.cs
- DiagnosticEventProvider.cs
- ScrollEvent.cs
- GlyphTypeface.cs
- StylusTip.cs
- ScriptingSectionGroup.cs
- ShaperBuffers.cs
- WorkflowRuntimeSection.cs
- ObjectItemCollection.cs
- HyperlinkAutomationPeer.cs
- FlowDecision.cs
- WithParamAction.cs
- ResXResourceWriter.cs
- AnimationTimeline.cs
- Environment.cs
- LeaseManager.cs
- EmptyTextWriter.cs
- QueryPageSettingsEventArgs.cs
- HttpApplication.cs
- NamespaceList.cs
- BuildManagerHost.cs
- DocumentPageTextView.cs
- DocumentApplicationJournalEntryEventArgs.cs
- WCFBuildProvider.cs
- CapabilitiesUse.cs
- NamespaceImport.cs
- WebConfigurationHostFileChange.cs
- WindowsScrollBar.cs
- ComponentConverter.cs
- EntityTemplateUserControl.cs
- HtmlString.cs
- SplineQuaternionKeyFrame.cs
- UnitySerializationHolder.cs
- EntityCommandExecutionException.cs
- DynamicResourceExtensionConverter.cs
- UserControlBuildProvider.cs
- TextChangedEventArgs.cs
- XmlAnyElementAttributes.cs
- TreeViewEvent.cs
- DataGridColumnCollectionEditor.cs
- ContextMenu.cs
- Utils.cs
- MembershipPasswordException.cs
- PolicyStatement.cs
- WebConvert.cs
- Int32AnimationUsingKeyFrames.cs
- EntityDataSourceUtil.cs
- ColorBlend.cs
- SQLString.cs
- MSHTMLHost.cs
- HashMembershipCondition.cs
- OutputCacheSection.cs
- ReadOnlyHierarchicalDataSource.cs
- WebHttpBehavior.cs
- PropertyCollection.cs
- DashStyles.cs
- _OSSOCK.cs
- DataGridColumnCollectionEditor.cs
- DocumentReference.cs
- ConfigXmlAttribute.cs
- StylusPlugin.cs
- RoamingStoreFile.cs
- GlyphsSerializer.cs
- XmlSchemaInclude.cs
- InstanceCompleteException.cs
- TextEditor.cs