Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / WinForms / Managed / System / WinForms / StatusBarPanel.cs / 1 / StatusBarPanel.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using System.Runtime.Serialization.Formatters; using System.Runtime.Remoting; using System.Runtime.InteropServices; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System; using System.Drawing; using System.Windows.Forms; using Microsoft.Win32; using System.Globalization; ////// /// [ ToolboxItem(false), DesignTimeVisible(false), DefaultProperty("Text") ] public class StatusBarPanel : Component, ISupportInitialize { private const int DEFAULTWIDTH = 100; private const int DEFAULTMINWIDTH = 10; private const int PANELTEXTINSET = 3; private const int PANELGAP = 2; private string text = ""; private string name = ""; private string toolTipText = ""; private Icon icon = null; private HorizontalAlignment alignment = HorizontalAlignment.Left; private System.Windows.Forms.StatusBarPanelBorderStyle borderStyle = System.Windows.Forms.StatusBarPanelBorderStyle.Sunken; private StatusBarPanelStyle style = StatusBarPanelStyle.Text; // these are package scope so the parent can get at them. // private StatusBar parent = null; private int width = DEFAULTWIDTH; private int right = 0; private int minWidth = DEFAULTMINWIDTH; private int index = 0; private StatusBarPanelAutoSize autoSize = StatusBarPanelAutoSize.None; private bool initializing = false; private object userData; ////// Stores the ////// control panel's information. /// /// /// public StatusBarPanel() { } ////// Initializes a new default instance of the ///class. /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(HorizontalAlignment.Left), Localizable(true), SRDescription(SR.StatusBarPanelAlignmentDescr) ] public HorizontalAlignment Alignment { get { return alignment; } set { //valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)HorizontalAlignment.Left, (int)HorizontalAlignment.Center)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(HorizontalAlignment)); } if (alignment != value) { alignment = value; Realize(); } } } ////// Gets or sets the ////// property. /// /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(StatusBarPanelAutoSize.None), RefreshProperties(RefreshProperties.All), SRDescription(SR.StatusBarPanelAutoSizeDescr) ] public StatusBarPanelAutoSize AutoSize { get { return this.autoSize; } set { //valid values are 0x1 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)StatusBarPanelAutoSize.None, (int)StatusBarPanelAutoSize.Contents)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(StatusBarPanelAutoSize)); } if (this.autoSize != value) { this.autoSize = value; UpdateSize(); } } } ////// Gets or sets the ////// property. /// /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(System.Windows.Forms.StatusBarPanelBorderStyle.Sunken), DispId(NativeMethods.ActiveX.DISPID_BORDERSTYLE), SRDescription(SR.StatusBarPanelBorderStyleDescr) ] public StatusBarPanelBorderStyle BorderStyle { get { return borderStyle; } set { //valid values are 0x1 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)StatusBarPanelBorderStyle.None, (int)StatusBarPanelBorderStyle.Sunken)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(StatusBarPanelBorderStyle)); } if (this.borderStyle != value) { this.borderStyle = value; Realize(); if (Created) this.parent.Invalidate(); } } } ////// Gets or sets the ////// /// property. /// /// /// /// ///internal bool Created { get { return this.parent != null && this.parent.ArePanelsRealized(); } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(null), Localizable(true), SRDescription(SR.StatusBarPanelIconDescr) ] public Icon Icon { get { // unfortunately we have no way of getting the icon from the control. return this.icon; } set { if (value != null && (((Icon)value).Height > SystemInformation.SmallIconSize.Height || ((Icon)value).Width > SystemInformation.SmallIconSize.Width)) { this.icon = new Icon(value, SystemInformation.SmallIconSize); } else { this.icon = value; } if (Created) { IntPtr handle = (this.icon == null) ? IntPtr.Zero : this.icon.Handle; this.parent.SendMessage(NativeMethods.SB_SETICON, (IntPtr)GetIndex(), handle); } UpdateSize(); if (Created) { this.parent.Invalidate(); } } } ////// Gets or sets the ////// property. /// /// /// /// internal int Index { get { return index; } set { index = value; } } ////// Expose index internally /// ////// /// [ SRCategory(SR.CatBehavior), DefaultValue(DEFAULTMINWIDTH), Localizable(true), RefreshProperties(RefreshProperties.All), SRDescription(SR.StatusBarPanelMinWidthDescr) ] public int MinWidth { get { return this.minWidth; } set { if (value < 0) { throw new ArgumentOutOfRangeException("MinWidth", SR.GetString(SR.InvalidLowBoundArgumentEx, "MinWidth", value.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } if (value != this.minWidth) { this.minWidth = value; UpdateSize(); if (this.minWidth > this.Width) { Width = value; } } } } ////// Gets or sets the minimum width the ///can be within the /// control. /// /// /// /// [ SRCategory(SR.CatAppearance), Localizable(true), SRDescription(SR.StatusBarPanelNameDescr) ] public string Name { get { return WindowsFormsUtils.GetComponentName(this, name); } set { name = value; if(Site!= null) { Site.Name = name; } } } ////// Gets or sets the name of the panel. /// ////// /// [Browsable(false)] public StatusBar Parent { get { return parent; } } ////// Represents the ////// control which hosts the /// panel. /// /// /// /// internal StatusBar ParentInternal { set { parent = value; } } ////// Expose a direct setter for parent internally /// ////// /// internal int Right { get { return right; } set { right = value; } } ////// Expose right internally /// ////// /// [ SRCategory(SR.CatAppearance), DefaultValue(StatusBarPanelStyle.Text), SRDescription(SR.StatusBarPanelStyleDescr) ] public StatusBarPanelStyle Style { get { return style;} set { //valid values are 0x1 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)StatusBarPanelStyle.Text, (int)StatusBarPanelStyle.OwnerDraw)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(StatusBarPanelStyle)); } if (this.style != value) { this.style = value; Realize(); if (Created) { this.parent.Invalidate(); } } } } ////// Gets or sets the style of the panel. /// /// ///[ SRCategory(SR.CatData), Localizable(false), Bindable(true), SRDescription(SR.ControlTagDescr), DefaultValue(null), TypeConverter(typeof(StringConverter)), ] public object Tag { get { return userData; } set { userData = value; } } /// /// /// [ SRCategory(SR.CatAppearance), Localizable(true), DefaultValue(""), SRDescription(SR.StatusBarPanelTextDescr) ] public string Text { get { if (text == null) { return ""; } else { return text; } } set { if (value == null) { value = ""; } if (!Text.Equals(value)) { if (value.Length == 0) { this.text = null; } else { this.text = value; } Realize(); UpdateSize(); } } } ////// Gets or sets the text of the panel. /// ////// /// [ SRCategory(SR.CatAppearance), Localizable(true), DefaultValue(""), SRDescription(SR.StatusBarPanelToolTipTextDescr) ] public string ToolTipText { get { if (this.toolTipText == null) { return ""; } else { return this.toolTipText; } } set { if (value == null) { value = ""; } if (!ToolTipText.Equals(value)) { if (value.Length == 0) { this.toolTipText = null; } else { this.toolTipText = value; } if (Created) { parent.UpdateTooltip(this); } } } } ////// Gets /// or sets the panel's tool tip text. /// ////// /// [ Localizable(true), SRCategory(SR.CatAppearance), DefaultValue(DEFAULTWIDTH), SRDescription(SR.StatusBarPanelWidthDescr) ] public int Width { get { return this.width; } set { if (!initializing && value < this.minWidth) throw new ArgumentOutOfRangeException("Width", SR.GetString(SR.WidthGreaterThanMinWidth)); this.width = value; UpdateSize(); } } ////// Gets or sets the width of the ///within the /// control. /// /// /// /// Handles tasks required when the control is being initialized. /// public void BeginInit() { initializing = true; } ////// /// /// protected override void Dispose(bool disposing) { if (disposing) { if (parent != null) { int index = GetIndex(); if (index != -1) { parent.Panels.RemoveAt(index); } } } base.Dispose(disposing); } ////// /// Called when initialization of the control is complete. /// public void EndInit() { initializing = false; if (Width < MinWidth) { Width = MinWidth; } } ////// /// /// Gets the width of the contents of the panel /// internal int GetContentsWidth(bool newPanel) { string text; if (newPanel) { if (this.text == null) text = ""; else text = this.text; } else text = Text; Graphics g = this.parent.CreateGraphicsInternal(); Size sz = Size.Ceiling(g.MeasureString(text, parent.Font)); if (this.icon != null) { sz.Width += this.icon.Size.Width + 5; } g.Dispose(); int width = sz.Width + SystemInformation.BorderSize.Width*2 + PANELTEXTINSET*2 + PANELGAP; return Math.Max(width, minWidth); } ////// /// /// Returns the index of the panel by making the parent control search /// for it within its list. /// private int GetIndex() { return index; } ////// /// /// Sets all the properties for this panel. /// internal void Realize() { if (Created) { string text; string sendText; int border = 0; if (this.text == null) { text = ""; } else { text = this.text; } HorizontalAlignment align = alignment; // Translate the alignment for Rtl apps // if (parent.RightToLeft == RightToLeft.Yes) { switch (align) { case HorizontalAlignment.Left: align = HorizontalAlignment.Right; break; case HorizontalAlignment.Right: align = HorizontalAlignment.Left; break; } } switch (align) { case HorizontalAlignment.Center: sendText = "\t" + text; break; case HorizontalAlignment.Right: sendText = "\t\t" + text; break; default: sendText = text; break; } switch (borderStyle) { case StatusBarPanelBorderStyle.None: border |= NativeMethods.SBT_NOBORDERS; break; case StatusBarPanelBorderStyle.Sunken: break; case StatusBarPanelBorderStyle.Raised: border |= NativeMethods.SBT_POPOUT; break; } switch (style) { case StatusBarPanelStyle.Text: break; case StatusBarPanelStyle.OwnerDraw: border |= NativeMethods.SBT_OWNERDRAW; break; } int wparam = GetIndex() | border; if (parent.RightToLeft == RightToLeft.Yes) { wparam |= NativeMethods.SBT_RTLREADING; } int result = (int) UnsafeNativeMethods.SendMessage(new HandleRef(parent, parent.Handle), NativeMethods.SB_SETTEXT, (IntPtr)wparam, sendText); if (result == 0) throw new InvalidOperationException(SR.GetString(SR.UnableToSetPanelText)); if (this.icon != null && style != StatusBarPanelStyle.OwnerDraw) { this.parent.SendMessage(NativeMethods.SB_SETICON, (IntPtr)GetIndex(), this.icon.Handle); } else { this.parent.SendMessage(NativeMethods.SB_SETICON, (IntPtr)GetIndex(), IntPtr.Zero); } if (style == StatusBarPanelStyle.OwnerDraw) { NativeMethods.RECT rect = new NativeMethods.RECT(); result = (int) UnsafeNativeMethods.SendMessage(new HandleRef(parent, parent.Handle), NativeMethods.SB_GETRECT, (IntPtr)GetIndex(), ref rect); if (result != 0) { this.parent.Invalidate(Rectangle.FromLTRB(rect.left, rect.top, rect.right, rect.bottom)); } } } } private void UpdateSize() { if (this.autoSize == StatusBarPanelAutoSize.Contents) { ApplyContentSizing(); } else { if (Created) { parent.DirtyLayout(); parent.PerformLayout(); } } } private void ApplyContentSizing() { if (this.autoSize == StatusBarPanelAutoSize.Contents && parent != null) { int newWidth = GetContentsWidth(false); if (newWidth != this.Width) { this.Width = newWidth; if (Created) { parent.DirtyLayout(); parent.PerformLayout(); } } } } ////// /// public override string ToString() { return "StatusBarPanel: {" + Text + "}"; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ ///// Retrieves a string that contains information about the /// panel. /// ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using System.Runtime.Serialization.Formatters; using System.Runtime.Remoting; using System.Runtime.InteropServices; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System; using System.Drawing; using System.Windows.Forms; using Microsoft.Win32; using System.Globalization; ////// /// [ ToolboxItem(false), DesignTimeVisible(false), DefaultProperty("Text") ] public class StatusBarPanel : Component, ISupportInitialize { private const int DEFAULTWIDTH = 100; private const int DEFAULTMINWIDTH = 10; private const int PANELTEXTINSET = 3; private const int PANELGAP = 2; private string text = ""; private string name = ""; private string toolTipText = ""; private Icon icon = null; private HorizontalAlignment alignment = HorizontalAlignment.Left; private System.Windows.Forms.StatusBarPanelBorderStyle borderStyle = System.Windows.Forms.StatusBarPanelBorderStyle.Sunken; private StatusBarPanelStyle style = StatusBarPanelStyle.Text; // these are package scope so the parent can get at them. // private StatusBar parent = null; private int width = DEFAULTWIDTH; private int right = 0; private int minWidth = DEFAULTMINWIDTH; private int index = 0; private StatusBarPanelAutoSize autoSize = StatusBarPanelAutoSize.None; private bool initializing = false; private object userData; ////// Stores the ////// control panel's information. /// /// /// public StatusBarPanel() { } ////// Initializes a new default instance of the ///class. /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(HorizontalAlignment.Left), Localizable(true), SRDescription(SR.StatusBarPanelAlignmentDescr) ] public HorizontalAlignment Alignment { get { return alignment; } set { //valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)HorizontalAlignment.Left, (int)HorizontalAlignment.Center)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(HorizontalAlignment)); } if (alignment != value) { alignment = value; Realize(); } } } ////// Gets or sets the ////// property. /// /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(StatusBarPanelAutoSize.None), RefreshProperties(RefreshProperties.All), SRDescription(SR.StatusBarPanelAutoSizeDescr) ] public StatusBarPanelAutoSize AutoSize { get { return this.autoSize; } set { //valid values are 0x1 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)StatusBarPanelAutoSize.None, (int)StatusBarPanelAutoSize.Contents)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(StatusBarPanelAutoSize)); } if (this.autoSize != value) { this.autoSize = value; UpdateSize(); } } } ////// Gets or sets the ////// property. /// /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(System.Windows.Forms.StatusBarPanelBorderStyle.Sunken), DispId(NativeMethods.ActiveX.DISPID_BORDERSTYLE), SRDescription(SR.StatusBarPanelBorderStyleDescr) ] public StatusBarPanelBorderStyle BorderStyle { get { return borderStyle; } set { //valid values are 0x1 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)StatusBarPanelBorderStyle.None, (int)StatusBarPanelBorderStyle.Sunken)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(StatusBarPanelBorderStyle)); } if (this.borderStyle != value) { this.borderStyle = value; Realize(); if (Created) this.parent.Invalidate(); } } } ////// Gets or sets the ////// /// property. /// /// /// /// ///internal bool Created { get { return this.parent != null && this.parent.ArePanelsRealized(); } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(null), Localizable(true), SRDescription(SR.StatusBarPanelIconDescr) ] public Icon Icon { get { // unfortunately we have no way of getting the icon from the control. return this.icon; } set { if (value != null && (((Icon)value).Height > SystemInformation.SmallIconSize.Height || ((Icon)value).Width > SystemInformation.SmallIconSize.Width)) { this.icon = new Icon(value, SystemInformation.SmallIconSize); } else { this.icon = value; } if (Created) { IntPtr handle = (this.icon == null) ? IntPtr.Zero : this.icon.Handle; this.parent.SendMessage(NativeMethods.SB_SETICON, (IntPtr)GetIndex(), handle); } UpdateSize(); if (Created) { this.parent.Invalidate(); } } } ////// Gets or sets the ////// property. /// /// /// /// internal int Index { get { return index; } set { index = value; } } ////// Expose index internally /// ////// /// [ SRCategory(SR.CatBehavior), DefaultValue(DEFAULTMINWIDTH), Localizable(true), RefreshProperties(RefreshProperties.All), SRDescription(SR.StatusBarPanelMinWidthDescr) ] public int MinWidth { get { return this.minWidth; } set { if (value < 0) { throw new ArgumentOutOfRangeException("MinWidth", SR.GetString(SR.InvalidLowBoundArgumentEx, "MinWidth", value.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } if (value != this.minWidth) { this.minWidth = value; UpdateSize(); if (this.minWidth > this.Width) { Width = value; } } } } ////// Gets or sets the minimum width the ///can be within the /// control. /// /// /// /// [ SRCategory(SR.CatAppearance), Localizable(true), SRDescription(SR.StatusBarPanelNameDescr) ] public string Name { get { return WindowsFormsUtils.GetComponentName(this, name); } set { name = value; if(Site!= null) { Site.Name = name; } } } ////// Gets or sets the name of the panel. /// ////// /// [Browsable(false)] public StatusBar Parent { get { return parent; } } ////// Represents the ////// control which hosts the /// panel. /// /// /// /// internal StatusBar ParentInternal { set { parent = value; } } ////// Expose a direct setter for parent internally /// ////// /// internal int Right { get { return right; } set { right = value; } } ////// Expose right internally /// ////// /// [ SRCategory(SR.CatAppearance), DefaultValue(StatusBarPanelStyle.Text), SRDescription(SR.StatusBarPanelStyleDescr) ] public StatusBarPanelStyle Style { get { return style;} set { //valid values are 0x1 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)StatusBarPanelStyle.Text, (int)StatusBarPanelStyle.OwnerDraw)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(StatusBarPanelStyle)); } if (this.style != value) { this.style = value; Realize(); if (Created) { this.parent.Invalidate(); } } } } ////// Gets or sets the style of the panel. /// /// ///[ SRCategory(SR.CatData), Localizable(false), Bindable(true), SRDescription(SR.ControlTagDescr), DefaultValue(null), TypeConverter(typeof(StringConverter)), ] public object Tag { get { return userData; } set { userData = value; } } /// /// /// [ SRCategory(SR.CatAppearance), Localizable(true), DefaultValue(""), SRDescription(SR.StatusBarPanelTextDescr) ] public string Text { get { if (text == null) { return ""; } else { return text; } } set { if (value == null) { value = ""; } if (!Text.Equals(value)) { if (value.Length == 0) { this.text = null; } else { this.text = value; } Realize(); UpdateSize(); } } } ////// Gets or sets the text of the panel. /// ////// /// [ SRCategory(SR.CatAppearance), Localizable(true), DefaultValue(""), SRDescription(SR.StatusBarPanelToolTipTextDescr) ] public string ToolTipText { get { if (this.toolTipText == null) { return ""; } else { return this.toolTipText; } } set { if (value == null) { value = ""; } if (!ToolTipText.Equals(value)) { if (value.Length == 0) { this.toolTipText = null; } else { this.toolTipText = value; } if (Created) { parent.UpdateTooltip(this); } } } } ////// Gets /// or sets the panel's tool tip text. /// ////// /// [ Localizable(true), SRCategory(SR.CatAppearance), DefaultValue(DEFAULTWIDTH), SRDescription(SR.StatusBarPanelWidthDescr) ] public int Width { get { return this.width; } set { if (!initializing && value < this.minWidth) throw new ArgumentOutOfRangeException("Width", SR.GetString(SR.WidthGreaterThanMinWidth)); this.width = value; UpdateSize(); } } ////// Gets or sets the width of the ///within the /// control. /// /// /// /// Handles tasks required when the control is being initialized. /// public void BeginInit() { initializing = true; } ////// /// /// protected override void Dispose(bool disposing) { if (disposing) { if (parent != null) { int index = GetIndex(); if (index != -1) { parent.Panels.RemoveAt(index); } } } base.Dispose(disposing); } ////// /// Called when initialization of the control is complete. /// public void EndInit() { initializing = false; if (Width < MinWidth) { Width = MinWidth; } } ////// /// /// Gets the width of the contents of the panel /// internal int GetContentsWidth(bool newPanel) { string text; if (newPanel) { if (this.text == null) text = ""; else text = this.text; } else text = Text; Graphics g = this.parent.CreateGraphicsInternal(); Size sz = Size.Ceiling(g.MeasureString(text, parent.Font)); if (this.icon != null) { sz.Width += this.icon.Size.Width + 5; } g.Dispose(); int width = sz.Width + SystemInformation.BorderSize.Width*2 + PANELTEXTINSET*2 + PANELGAP; return Math.Max(width, minWidth); } ////// /// /// Returns the index of the panel by making the parent control search /// for it within its list. /// private int GetIndex() { return index; } ////// /// /// Sets all the properties for this panel. /// internal void Realize() { if (Created) { string text; string sendText; int border = 0; if (this.text == null) { text = ""; } else { text = this.text; } HorizontalAlignment align = alignment; // Translate the alignment for Rtl apps // if (parent.RightToLeft == RightToLeft.Yes) { switch (align) { case HorizontalAlignment.Left: align = HorizontalAlignment.Right; break; case HorizontalAlignment.Right: align = HorizontalAlignment.Left; break; } } switch (align) { case HorizontalAlignment.Center: sendText = "\t" + text; break; case HorizontalAlignment.Right: sendText = "\t\t" + text; break; default: sendText = text; break; } switch (borderStyle) { case StatusBarPanelBorderStyle.None: border |= NativeMethods.SBT_NOBORDERS; break; case StatusBarPanelBorderStyle.Sunken: break; case StatusBarPanelBorderStyle.Raised: border |= NativeMethods.SBT_POPOUT; break; } switch (style) { case StatusBarPanelStyle.Text: break; case StatusBarPanelStyle.OwnerDraw: border |= NativeMethods.SBT_OWNERDRAW; break; } int wparam = GetIndex() | border; if (parent.RightToLeft == RightToLeft.Yes) { wparam |= NativeMethods.SBT_RTLREADING; } int result = (int) UnsafeNativeMethods.SendMessage(new HandleRef(parent, parent.Handle), NativeMethods.SB_SETTEXT, (IntPtr)wparam, sendText); if (result == 0) throw new InvalidOperationException(SR.GetString(SR.UnableToSetPanelText)); if (this.icon != null && style != StatusBarPanelStyle.OwnerDraw) { this.parent.SendMessage(NativeMethods.SB_SETICON, (IntPtr)GetIndex(), this.icon.Handle); } else { this.parent.SendMessage(NativeMethods.SB_SETICON, (IntPtr)GetIndex(), IntPtr.Zero); } if (style == StatusBarPanelStyle.OwnerDraw) { NativeMethods.RECT rect = new NativeMethods.RECT(); result = (int) UnsafeNativeMethods.SendMessage(new HandleRef(parent, parent.Handle), NativeMethods.SB_GETRECT, (IntPtr)GetIndex(), ref rect); if (result != 0) { this.parent.Invalidate(Rectangle.FromLTRB(rect.left, rect.top, rect.right, rect.bottom)); } } } } private void UpdateSize() { if (this.autoSize == StatusBarPanelAutoSize.Contents) { ApplyContentSizing(); } else { if (Created) { parent.DirtyLayout(); parent.PerformLayout(); } } } private void ApplyContentSizing() { if (this.autoSize == StatusBarPanelAutoSize.Contents && parent != null) { int newWidth = GetContentsWidth(false); if (newWidth != this.Width) { this.Width = newWidth; if (Created) { parent.DirtyLayout(); parent.PerformLayout(); } } } } ////// /// public override string ToString() { return "StatusBarPanel: {" + Text + "}"; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007./// Retrieves a string that contains information about the /// panel. /// ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataControlButton.cs
- SettingsProperty.cs
- DefaultShape.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- DataKey.cs
- ContextQuery.cs
- ToolTip.cs
- WindowsPrincipal.cs
- EntityDataSource.cs
- XmlAttributes.cs
- DataGridViewComboBoxEditingControl.cs
- SystemSounds.cs
- Registry.cs
- UICuesEvent.cs
- MachineKeyConverter.cs
- SimpleTypeResolver.cs
- CuspData.cs
- NotifyInputEventArgs.cs
- TextSpanModifier.cs
- Matrix3D.cs
- AttributeConverter.cs
- Executor.cs
- RetrieveVirtualItemEventArgs.cs
- ProgressBarRenderer.cs
- XamlValidatingReader.cs
- GcHandle.cs
- SignedInfo.cs
- DbConnectionStringCommon.cs
- UIEndRequest.cs
- EventArgs.cs
- BufferModesCollection.cs
- SoapAttributeOverrides.cs
- TemplateEditingFrame.cs
- ComponentResourceKeyConverter.cs
- XmlStreamStore.cs
- ToggleProviderWrapper.cs
- contentDescriptor.cs
- CfgParser.cs
- DataListDesigner.cs
- CodeTypeReference.cs
- RectangleF.cs
- Cursor.cs
- UndirectedGraph.cs
- CqlLexer.cs
- AutoGeneratedField.cs
- ResourceDisplayNameAttribute.cs
- SourceItem.cs
- SoapIgnoreAttribute.cs
- TimeManager.cs
- ConfigXmlCDataSection.cs
- CaseInsensitiveComparer.cs
- BuilderInfo.cs
- FloatUtil.cs
- DataSvcMapFile.cs
- AuthenticationConfig.cs
- Metafile.cs
- EntityDataSourceState.cs
- DesignerView.Commands.cs
- HighlightVisual.cs
- ThrowHelper.cs
- mda.cs
- ReadOnlyTernaryTree.cs
- FlagsAttribute.cs
- ListViewHitTestInfo.cs
- RedirectionProxy.cs
- Substitution.cs
- AccessedThroughPropertyAttribute.cs
- Accessible.cs
- DataPager.cs
- CodeChecksumPragma.cs
- WindowVisualStateTracker.cs
- ExpressionTable.cs
- SendMailErrorEventArgs.cs
- ErrorEventArgs.cs
- RadioButtonBaseAdapter.cs
- MissingSatelliteAssemblyException.cs
- DocumentPageHost.cs
- GenerateTemporaryAssemblyTask.cs
- XPathConvert.cs
- CodeTypeReferenceCollection.cs
- CanonicalFormWriter.cs
- RegexNode.cs
- CompositeActivityDesigner.cs
- WindowsTooltip.cs
- ExpressionBuilderCollection.cs
- ClaimComparer.cs
- SortedDictionary.cs
- ClientFormsAuthenticationMembershipProvider.cs
- Soap.cs
- NameScope.cs
- ClrProviderManifest.cs
- PerformanceCounterCategory.cs
- Baml6Assembly.cs
- DataControlPagerLinkButton.cs
- PublishLicense.cs
- InstanceCollisionException.cs
- Misc.cs
- FloatUtil.cs
- SynchronizedDispatch.cs
- HttpRuntimeSection.cs