Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripSystemRenderer.cs / 1 / ToolStripSystemRenderer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System.Windows.Forms.VisualStyles; using System.Drawing; using System.Windows.Forms.Internal; using System.Drawing.Imaging; using System.ComponentModel; using System.Windows.Forms.Layout; ///public class ToolStripSystemRenderer : ToolStripRenderer { [ThreadStatic()] private static VisualStyleRenderer renderer = null; private ToolStripRenderer toolStripHighContrastRenderer; public ToolStripSystemRenderer() { } internal ToolStripSystemRenderer(bool isDefault) : base(isDefault) { } internal override ToolStripRenderer RendererOverride { get { if (DisplayInformation.HighContrast) { return HighContrastRenderer; } return null; } } internal ToolStripRenderer HighContrastRenderer { get { if (toolStripHighContrastRenderer == null) { toolStripHighContrastRenderer = new ToolStripHighContrastRenderer(/*renderLikeSystem*/true); } return toolStripHighContrastRenderer; } } /// /// Draw the background color /// private static VisualStyleRenderer VisualStyleRenderer { get { if (Application.RenderWithVisualStyles) { if (renderer == null && VisualStyleRenderer.IsElementDefined(VisualStyleElement.ToolBar.Button.Normal)) { renderer = new VisualStyleRenderer(VisualStyleElement.ToolBar.Button.Normal); } } else { renderer = null; } return renderer; } } ////// Fill the item's background as bounded by the rectangle /// private static void FillBackground(Graphics g, Rectangle bounds, Color backColor) { // Fill the background with the item's back color if (backColor.IsSystemColor) { g.FillRectangle(SystemBrushes.FromSystemColor(backColor), bounds); } else { using (Brush backBrush = new SolidBrush(backColor)) { g.FillRectangle(backBrush, bounds); } } } ////// returns true if you are required to dispose the pen /// private static bool GetPen(Color color, ref Pen pen) { if (color.IsSystemColor) { pen = SystemPens.FromSystemColor(color); return false; } else{ pen = new Pen(color); return true; } } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static int GetItemState(ToolStripItem item) { return (int)GetToolBarState(item); } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static int GetSplitButtonDropDownItemState(ToolStripSplitButton item) { return (int)GetSplitButtonToolBarState(item, true); } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static int GetSplitButtonItemState(ToolStripSplitButton item) { return (int)GetSplitButtonToolBarState(item, false); } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static ToolBarState GetSplitButtonToolBarState(ToolStripSplitButton button, bool dropDownButton) { ToolBarState state = ToolBarState.Normal; if (button != null) { if (!button.Enabled) { state = ToolBarState.Disabled; } else if (dropDownButton){ if (button.DropDownButtonPressed || button.ButtonPressed) { state = ToolBarState.Pressed; } else if (button.DropDownButtonSelected || button.ButtonSelected) { state = ToolBarState.Hot; } } else{ if (button.ButtonPressed) { state = ToolBarState.Pressed; } else if (button.ButtonSelected) { state = ToolBarState.Hot; } } } return state; } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static ToolBarState GetToolBarState(ToolStripItem item) { ToolBarState state = ToolBarState.Normal; if (item != null) { if (!item.Enabled) { state = ToolBarState.Disabled; } if (item is ToolStripButton && ((ToolStripButton)item).Checked) { state = ToolBarState.Checked; } else if (item.Pressed) { state = ToolBarState.Pressed; } else if (item.Selected) { state = ToolBarState.Hot; } } return state; } ////// /// Draw the winbar background. ToolStrip users should override this if they want to draw differently. /// protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e) { ToolStrip toolStrip = e.ToolStrip; Graphics g = e.Graphics; Rectangle bounds= e.AffectedBounds; if (!ShouldPaintBackground(toolStrip)) { return; } if (toolStrip is StatusStrip) { RenderStatusStripBackground(e); } else { if (DisplayInformation.HighContrast) { FillBackground(g, bounds, SystemColors.ButtonFace); } else if (DisplayInformation.LowResolution) { FillBackground(g, bounds, (toolStrip is ToolStripDropDown) ? SystemColors.ControlLight : e.BackColor); } else if (toolStrip.IsDropDown) { FillBackground(g, bounds, (!ToolStripManager.VisualStylesEnabled) ? e.BackColor : SystemColors.Menu); } else if (toolStrip is MenuStrip) { FillBackground(g, bounds, (!ToolStripManager.VisualStylesEnabled) ? e.BackColor : SystemColors.MenuBar); } else if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(VisualStyleElement.Rebar.Band.Normal)) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(VisualStyleElement.ToolBar.Bar.Normal); vsRenderer.DrawBackground(g, bounds); } else { FillBackground(g, bounds, (!ToolStripManager.VisualStylesEnabled) ? e.BackColor : SystemColors.MenuBar); } } } ////// /// Draw the border around the ToolStrip. This should be done as the last step. /// protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) { ToolStrip toolStrip = e.ToolStrip; Graphics g = e.Graphics; Rectangle bounds = e.ToolStrip.ClientRectangle; if (toolStrip is StatusStrip) { RenderStatusStripBorder(e); } else if (toolStrip is ToolStripDropDown) { ToolStripDropDown toolStripDropDown = toolStrip as ToolStripDropDown; // Paint the border for the window depending on whether or not we have a drop shadow effect. if (toolStripDropDown.DropShadowEnabled && ToolStripManager.VisualStylesEnabled) { bounds.Width -= 1; bounds.Height -= 1; e.Graphics.DrawRectangle(new Pen(SystemColors.ControlDark), bounds); } else { ControlPaint.DrawBorder3D(e.Graphics, bounds, Border3DStyle.Raised); } } else { if (ToolStripManager.VisualStylesEnabled) { e.Graphics.DrawLine(SystemPens.ButtonHighlight, 0,bounds.Bottom-1,bounds.Width, bounds.Bottom-1); e.Graphics.DrawLine(SystemPens.InactiveBorder, 0,bounds.Bottom-2,bounds.Width,bounds.Bottom-2); } else { e.Graphics.DrawLine(SystemPens.ButtonHighlight, 0,bounds.Bottom-1,bounds.Width, bounds.Bottom-1); e.Graphics.DrawLine(SystemPens.ButtonShadow, 0,bounds.Bottom-2,bounds.Width,bounds.Bottom-2); } } } ////// /// Draw the grip. ToolStrip users should override this if they want to draw differently. /// protected override void OnRenderGrip(ToolStripGripRenderEventArgs e) { Graphics g = e.Graphics; Rectangle bounds = new Rectangle(Point.Empty, e.GripBounds.Size); bool verticalGrip = e.GripDisplayStyle == ToolStripGripDisplayStyle.Vertical; if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(VisualStyleElement.Rebar.Gripper.Normal)) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; if (verticalGrip) { vsRenderer.SetParameters(VisualStyleElement.Rebar.Gripper.Normal); bounds.Height = ((bounds.Height -2/*number of pixels for border*/) / 4) * 4; // make sure height is an even interval of 4. bounds.Y = Math.Max(0,(e.GripBounds.Height - bounds.Height -2/*number of pixels for border*/) / 2); } else { vsRenderer.SetParameters(VisualStyleElement.Rebar.GripperVertical.Normal); } vsRenderer.DrawBackground(g, bounds); } else { // do some fixup so that we dont paint from end to end. Color backColor = e.ToolStrip.BackColor; FillBackground(g, bounds, backColor); if (verticalGrip) { if (bounds.Height >= 4) { bounds.Inflate(0,-2); // scoot down 2PX and start drawing } bounds.Width = 3; } else { if (bounds.Width >= 4) { bounds.Inflate(-2,0); // scoot over 2PX and start drawing } bounds.Height = 3; } RenderSmall3DBorderInternal(g, bounds, ToolBarState.Hot, (e.ToolStrip.RightToLeft == RightToLeft.Yes)); } } ////// /// Draw the items background /// protected override void OnRenderItemBackground(ToolStripItemRenderEventArgs e) { } ////// /// Draw the items background /// protected override void OnRenderImageMargin(ToolStripRenderEventArgs e) { } ////// /// Draw the button background /// protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { RenderItemInternal(e); } ////// /// Draw the button background /// protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e) { RenderItemInternal(e); } ////// /// Draw the button background /// protected override void OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs e) { ToolStripItem item = e.Item; Graphics g = e.Graphics; if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(VisualStyleElement.Rebar.Chevron.Normal)) { VisualStyleElement chevronElement = VisualStyleElement.Rebar.Chevron.Normal; VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(chevronElement.ClassName, chevronElement.Part, GetItemState(item)); vsRenderer.DrawBackground(g, new Rectangle(Point.Empty, item.Size)); } else { RenderItemInternal(e); Color arrowColor = item.Enabled ? SystemColors.ControlText : SystemColors.ControlDark; DrawArrow(new ToolStripArrowRenderEventArgs(g, item, new Rectangle(Point.Empty, item.Size), arrowColor, ArrowDirection.Down)); } } ////// /// Draw the button background /// protected override void OnRenderLabelBackground(ToolStripItemRenderEventArgs e) { RenderLabelInternal(e); } ////// /// Draw the items background /// protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { ToolStripMenuItem item = e.Item as ToolStripMenuItem; Graphics g = e.Graphics; if (item is MdiControlStrip.SystemMenuItem) { return; // no highlights are painted behind a system menu item } // if (item != null) { Rectangle bounds = new Rectangle(Point.Empty, item.Size); if (item.IsTopLevel && !ToolStripManager.VisualStylesEnabled) { // CLASSIC MODE (3D edges) // Draw box highlight for toplevel items in downlevel platforms if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, item.ContentRectangle, item.ContentRectangle); } else if (item.RawBackColor != Color.Empty) { FillBackground(g, item.ContentRectangle, item.BackColor); } // Toplevel menu items do 3D borders. ToolBarState state = GetToolBarState(item); RenderSmall3DBorderInternal(g, bounds, state, (item.RightToLeft == RightToLeft.Yes)); } else { // XP++ MODE (no 3D edges) // Draw blue filled highlight for toplevel items in themed platforms // or items parented to a drop down Rectangle fillRect = new Rectangle(Point.Empty, item.Size); if (item.IsOnDropDown) { // VSWhidbey 518568: scoot in by 2 pixels when selected fillRect.X += 2; fillRect.Width -= 3; //its already 1 away from the right edge } if (item.Selected || item.Pressed) { g.FillRectangle(SystemBrushes.Highlight, fillRect); } else { if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, item.ContentRectangle, fillRect); } else if (!ToolStripManager.VisualStylesEnabled && (item.RawBackColor != Color.Empty)) { FillBackground(g, fillRect, item.BackColor); } } } } } ////// /// Draws a toolbar separator. ToolStrip users should override this function to change the /// drawing of all separators. /// protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e) { RenderSeparatorInternal(e.Graphics, e.Item, new Rectangle(Point.Empty, e.Item.Size), e.Vertical); } ///protected override void OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs e) { RenderLabelInternal(e); ToolStripStatusLabel item = e.Item as ToolStripStatusLabel; ControlPaint.DrawBorder3D(e.Graphics, new Rectangle(0,0,item.Width-1, item.Height-1), item.BorderStyle, (Border3DSide)item.BorderSides); } /// /// /// Draw the item's background. /// protected override void OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs e) { ToolStripSplitButton splitButton = e.Item as ToolStripSplitButton; Graphics g = e.Graphics; bool rightToLeft = (splitButton.RightToLeft == RightToLeft.Yes); Color arrowColor = splitButton.Enabled ? SystemColors.ControlText : SystemColors.ControlDark; // in right to left - we need to swap the parts so we dont draw v][ toolStripSplitButton VisualStyleElement splitButtonDropDownPart = (rightToLeft) ? VisualStyleElement.ToolBar.SplitButton.Normal : VisualStyleElement.ToolBar.SplitButtonDropDown.Normal; VisualStyleElement splitButtonPart = (rightToLeft) ? VisualStyleElement.ToolBar.DropDownButton.Normal : VisualStyleElement.ToolBar.SplitButton.Normal; Rectangle bounds = new Rectangle(Point.Empty, splitButton.Size); if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(splitButtonDropDownPart) && VisualStyleRenderer.IsElementDefined(splitButtonPart)) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; // Draw the SplitButton Button portion of it. vsRenderer.SetParameters(splitButtonPart.ClassName, splitButtonPart.Part, GetSplitButtonItemState(splitButton)); // the lovely Windows theming for split button comes in three pieces: // SplitButtonDropDown: [ v | // Separator: | // SplitButton: | ] // this is great except if you want to swap the button in RTL. In this case we need // to use the DropDownButton instead of the SplitButtonDropDown and paint the arrow ourselves. Rectangle splitButtonBounds = splitButton.ButtonBounds; if (rightToLeft) { // scoot to the left so we dont draw double shadow like so: ][ splitButtonBounds.Inflate(2,0); } // Draw the button portion of it. vsRenderer.DrawBackground(g, splitButtonBounds); // Draw the SplitButton DropDownButton portion of it. vsRenderer.SetParameters(splitButtonDropDownPart.ClassName, splitButtonDropDownPart.Part, GetSplitButtonDropDownItemState(splitButton)); // Draw the drop down button portion vsRenderer.DrawBackground(g, splitButton.DropDownButtonBounds); // fill in the background image Rectangle fillRect = splitButton.ContentRectangle; if (splitButton.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, splitButton.BackgroundImage, splitButton.BackColor, splitButton.BackgroundImageLayout, fillRect, fillRect); } // draw the separator over it. RenderSeparatorInternal(g,splitButton, splitButton.SplitterBounds, true); // and of course, now if we're in RTL we now need to paint the arrow // because we're no longer using a part that has it built in. if (rightToLeft || splitButton.BackgroundImage != null) { DrawArrow(new ToolStripArrowRenderEventArgs(g, splitButton, splitButton.DropDownButtonBounds, arrowColor, ArrowDirection.Down)); } } else { // Draw the split button button Rectangle splitButtonButtonRect = splitButton.ButtonBounds; if (splitButton.BackgroundImage != null) { // fill in the background image Rectangle fillRect = (splitButton.Selected) ? splitButton.ContentRectangle :bounds; if (splitButton.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, splitButton.BackgroundImage, splitButton.BackColor, splitButton.BackgroundImageLayout, bounds, fillRect); } } else { FillBackground(g,splitButtonButtonRect, splitButton.BackColor); } ToolBarState state = GetSplitButtonToolBarState(splitButton, false); RenderSmall3DBorderInternal(g, splitButtonButtonRect, state, rightToLeft); // draw the split button drop down Rectangle dropDownRect = splitButton.DropDownButtonBounds; // fill the color in the dropdown button if (splitButton.BackgroundImage == null) { FillBackground(g, dropDownRect, splitButton.BackColor); } state = GetSplitButtonToolBarState(splitButton, true); if ((state == ToolBarState.Pressed) || (state == ToolBarState.Hot)) { RenderSmall3DBorderInternal(g, dropDownRect, state, rightToLeft); } DrawArrow(new ToolStripArrowRenderEventArgs(g, splitButton, dropDownRect, arrowColor, ArrowDirection.Down)); } } ////// This exists mainly so that buttons, labels and items, etc can share the same implementation. /// If OnRenderButton called OnRenderItem we would never be able to change the implementation /// as it would be a breaking change. If in v1, the user overrode OnRenderItem to draw green triangles /// and in v2 we decided to add a feature to button that would require us to no longer call OnRenderItem - /// the user's version of OnRenderItem would not get called when he upgraded his framework. Hence /// everyone should just call this private shared method. Users need to override each item they want /// to change the look and feel of. /// private void RenderItemInternal(ToolStripItemRenderEventArgs e) { ToolStripItem item = e.Item; Graphics g = e.Graphics; ToolBarState state = GetToolBarState(item); VisualStyleElement toolBarElement = VisualStyleElement.ToolBar.Button.Normal; if (ToolStripManager.VisualStylesEnabled && (VisualStyleRenderer.IsElementDefined(toolBarElement))) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(toolBarElement.ClassName, toolBarElement.Part, (int)state); vsRenderer.DrawBackground(g, new Rectangle(Point.Empty, item.Size)); } else { RenderSmall3DBorderInternal(g, new Rectangle(Point.Empty, item.Size), state, (item.RightToLeft == RightToLeft.Yes)); } Rectangle fillRect = item.ContentRectangle; if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, fillRect, fillRect); } else { ToolStrip parent = item.GetCurrentParent(); if ((parent != null) && (state != ToolBarState.Checked) && (item.BackColor != parent.BackColor)) { FillBackground(g, fillRect, item.BackColor); } } } ////// private void RenderSeparatorInternal(Graphics g, ToolStripItem item, Rectangle bounds, bool vertical) { VisualStyleElement separator = (vertical) ? VisualStyleElement.ToolBar.SeparatorHorizontal.Normal : VisualStyleElement.ToolBar.SeparatorVertical.Normal; if (ToolStripManager.VisualStylesEnabled && (VisualStyleRenderer.IsElementDefined(separator))){ VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(separator.ClassName, separator.Part, GetItemState(item)); vsRenderer.DrawBackground(g, bounds); } else { Color foreColor = item.ForeColor; Color backColor = item.BackColor; Pen foreColorPen = SystemPens.ControlDark; bool disposeForeColorPen = GetPen(foreColor, ref foreColorPen); try { if (vertical) { if (bounds.Height >= 4) { bounds.Inflate(0,-2); // scoot down 2PX and start drawing } bool rightToLeft = (item.RightToLeft == RightToLeft.Yes); Pen leftPen = (rightToLeft) ? SystemPens.ButtonHighlight : foreColorPen; Pen rightPen = (rightToLeft) ? foreColorPen : SystemPens.ButtonHighlight; // Draw dark line int startX = bounds.Width / 2; g.DrawLine(leftPen, startX, bounds.Top, startX, bounds.Bottom); // Draw highlight one pixel to the right startX++; g.DrawLine(rightPen, startX, bounds.Top, startX, bounds.Bottom); } else { // // horizontal separator if (bounds.Width >= 4) { bounds.Inflate(-2,0); // scoot over 2PX and start drawing } // Draw dark line int startY = bounds.Height / 2; g.DrawLine(foreColorPen, bounds.Left, startY, bounds.Right, startY); // Draw highlight one pixel to the right startY++; g.DrawLine(SystemPens.ButtonHighlight, bounds.Left, startY, bounds.Right, startY); } } finally { if (disposeForeColorPen && foreColorPen != null) { foreColorPen.Dispose(); } } } } private void RenderSmall3DBorderInternal (Graphics g, Rectangle bounds, ToolBarState state, bool rightToLeft) { if ((state == ToolBarState.Hot) ||(state == ToolBarState.Pressed) || (state == ToolBarState.Checked)) { Pen leftPen, topPen, rightPen,bottomPen; topPen = (state == ToolBarState.Hot) ? SystemPens.ButtonHighlight : SystemPens.ButtonShadow; bottomPen = (state == ToolBarState.Hot)? SystemPens.ButtonShadow : SystemPens.ButtonHighlight; leftPen = (rightToLeft) ? bottomPen : topPen; rightPen = (rightToLeft) ? topPen : bottomPen; g.DrawLine(topPen, bounds.Left, bounds.Top, bounds.Right -1, bounds.Top); g.DrawLine(leftPen, bounds.Left, bounds.Top, bounds.Left, bounds.Bottom-1); g.DrawLine(rightPen, bounds.Right-1, bounds.Top, bounds.Right -1, bounds.Bottom-1); g.DrawLine(bottomPen, bounds.Left, bounds.Bottom-1, bounds.Right -1, bounds.Bottom -1); } } private void RenderStatusStripBorder(ToolStripRenderEventArgs e) { if (!Application.RenderWithVisualStyles) { e.Graphics.DrawLine(SystemPens.ButtonHighlight, 0,0,e.ToolStrip.Width, 0); } } private static void RenderStatusStripBackground(ToolStripRenderEventArgs e) { if (Application.RenderWithVisualStyles) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(VisualStyleElement.Status.Bar.Normal); vsRenderer.DrawBackground(e.Graphics,new Rectangle(0,0,e.ToolStrip.Width-1, e.ToolStrip.Height-1)); } else { if (!SystemInformation.InLockedTerminalSession()) { // see ddb#191714 e.Graphics.Clear(e.BackColor); } } } private static void RenderLabelInternal(ToolStripItemRenderEventArgs e) { // dont call RenderItemInternal, as we NEVER want to paint hot. ToolStripItem item = e.Item; Graphics g = e.Graphics; Rectangle fillRect = item.ContentRectangle; if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, fillRect, fillRect); } else { VisualStyleRenderer vsRenderer = VisualStyleRenderer; if (vsRenderer == null || (item.BackColor != SystemColors.Control)) { FillBackground(g, fillRect, item.BackColor); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System.Windows.Forms.VisualStyles; using System.Drawing; using System.Windows.Forms.Internal; using System.Drawing.Imaging; using System.ComponentModel; using System.Windows.Forms.Layout; ///public class ToolStripSystemRenderer : ToolStripRenderer { [ThreadStatic()] private static VisualStyleRenderer renderer = null; private ToolStripRenderer toolStripHighContrastRenderer; public ToolStripSystemRenderer() { } internal ToolStripSystemRenderer(bool isDefault) : base(isDefault) { } internal override ToolStripRenderer RendererOverride { get { if (DisplayInformation.HighContrast) { return HighContrastRenderer; } return null; } } internal ToolStripRenderer HighContrastRenderer { get { if (toolStripHighContrastRenderer == null) { toolStripHighContrastRenderer = new ToolStripHighContrastRenderer(/*renderLikeSystem*/true); } return toolStripHighContrastRenderer; } } /// /// Draw the background color /// private static VisualStyleRenderer VisualStyleRenderer { get { if (Application.RenderWithVisualStyles) { if (renderer == null && VisualStyleRenderer.IsElementDefined(VisualStyleElement.ToolBar.Button.Normal)) { renderer = new VisualStyleRenderer(VisualStyleElement.ToolBar.Button.Normal); } } else { renderer = null; } return renderer; } } ////// Fill the item's background as bounded by the rectangle /// private static void FillBackground(Graphics g, Rectangle bounds, Color backColor) { // Fill the background with the item's back color if (backColor.IsSystemColor) { g.FillRectangle(SystemBrushes.FromSystemColor(backColor), bounds); } else { using (Brush backBrush = new SolidBrush(backColor)) { g.FillRectangle(backBrush, bounds); } } } ////// returns true if you are required to dispose the pen /// private static bool GetPen(Color color, ref Pen pen) { if (color.IsSystemColor) { pen = SystemPens.FromSystemColor(color); return false; } else{ pen = new Pen(color); return true; } } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static int GetItemState(ToolStripItem item) { return (int)GetToolBarState(item); } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static int GetSplitButtonDropDownItemState(ToolStripSplitButton item) { return (int)GetSplitButtonToolBarState(item, true); } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static int GetSplitButtonItemState(ToolStripSplitButton item) { return (int)GetSplitButtonToolBarState(item, false); } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static ToolBarState GetSplitButtonToolBarState(ToolStripSplitButton button, bool dropDownButton) { ToolBarState state = ToolBarState.Normal; if (button != null) { if (!button.Enabled) { state = ToolBarState.Disabled; } else if (dropDownButton){ if (button.DropDownButtonPressed || button.ButtonPressed) { state = ToolBarState.Pressed; } else if (button.DropDownButtonSelected || button.ButtonSelected) { state = ToolBarState.Hot; } } else{ if (button.ButtonPressed) { state = ToolBarState.Pressed; } else if (button.ButtonSelected) { state = ToolBarState.Hot; } } } return state; } ////// translates the winbar item state into a toolbar state, which is something the renderer understands /// private static ToolBarState GetToolBarState(ToolStripItem item) { ToolBarState state = ToolBarState.Normal; if (item != null) { if (!item.Enabled) { state = ToolBarState.Disabled; } if (item is ToolStripButton && ((ToolStripButton)item).Checked) { state = ToolBarState.Checked; } else if (item.Pressed) { state = ToolBarState.Pressed; } else if (item.Selected) { state = ToolBarState.Hot; } } return state; } ////// /// Draw the winbar background. ToolStrip users should override this if they want to draw differently. /// protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e) { ToolStrip toolStrip = e.ToolStrip; Graphics g = e.Graphics; Rectangle bounds= e.AffectedBounds; if (!ShouldPaintBackground(toolStrip)) { return; } if (toolStrip is StatusStrip) { RenderStatusStripBackground(e); } else { if (DisplayInformation.HighContrast) { FillBackground(g, bounds, SystemColors.ButtonFace); } else if (DisplayInformation.LowResolution) { FillBackground(g, bounds, (toolStrip is ToolStripDropDown) ? SystemColors.ControlLight : e.BackColor); } else if (toolStrip.IsDropDown) { FillBackground(g, bounds, (!ToolStripManager.VisualStylesEnabled) ? e.BackColor : SystemColors.Menu); } else if (toolStrip is MenuStrip) { FillBackground(g, bounds, (!ToolStripManager.VisualStylesEnabled) ? e.BackColor : SystemColors.MenuBar); } else if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(VisualStyleElement.Rebar.Band.Normal)) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(VisualStyleElement.ToolBar.Bar.Normal); vsRenderer.DrawBackground(g, bounds); } else { FillBackground(g, bounds, (!ToolStripManager.VisualStylesEnabled) ? e.BackColor : SystemColors.MenuBar); } } } ////// /// Draw the border around the ToolStrip. This should be done as the last step. /// protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) { ToolStrip toolStrip = e.ToolStrip; Graphics g = e.Graphics; Rectangle bounds = e.ToolStrip.ClientRectangle; if (toolStrip is StatusStrip) { RenderStatusStripBorder(e); } else if (toolStrip is ToolStripDropDown) { ToolStripDropDown toolStripDropDown = toolStrip as ToolStripDropDown; // Paint the border for the window depending on whether or not we have a drop shadow effect. if (toolStripDropDown.DropShadowEnabled && ToolStripManager.VisualStylesEnabled) { bounds.Width -= 1; bounds.Height -= 1; e.Graphics.DrawRectangle(new Pen(SystemColors.ControlDark), bounds); } else { ControlPaint.DrawBorder3D(e.Graphics, bounds, Border3DStyle.Raised); } } else { if (ToolStripManager.VisualStylesEnabled) { e.Graphics.DrawLine(SystemPens.ButtonHighlight, 0,bounds.Bottom-1,bounds.Width, bounds.Bottom-1); e.Graphics.DrawLine(SystemPens.InactiveBorder, 0,bounds.Bottom-2,bounds.Width,bounds.Bottom-2); } else { e.Graphics.DrawLine(SystemPens.ButtonHighlight, 0,bounds.Bottom-1,bounds.Width, bounds.Bottom-1); e.Graphics.DrawLine(SystemPens.ButtonShadow, 0,bounds.Bottom-2,bounds.Width,bounds.Bottom-2); } } } ////// /// Draw the grip. ToolStrip users should override this if they want to draw differently. /// protected override void OnRenderGrip(ToolStripGripRenderEventArgs e) { Graphics g = e.Graphics; Rectangle bounds = new Rectangle(Point.Empty, e.GripBounds.Size); bool verticalGrip = e.GripDisplayStyle == ToolStripGripDisplayStyle.Vertical; if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(VisualStyleElement.Rebar.Gripper.Normal)) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; if (verticalGrip) { vsRenderer.SetParameters(VisualStyleElement.Rebar.Gripper.Normal); bounds.Height = ((bounds.Height -2/*number of pixels for border*/) / 4) * 4; // make sure height is an even interval of 4. bounds.Y = Math.Max(0,(e.GripBounds.Height - bounds.Height -2/*number of pixels for border*/) / 2); } else { vsRenderer.SetParameters(VisualStyleElement.Rebar.GripperVertical.Normal); } vsRenderer.DrawBackground(g, bounds); } else { // do some fixup so that we dont paint from end to end. Color backColor = e.ToolStrip.BackColor; FillBackground(g, bounds, backColor); if (verticalGrip) { if (bounds.Height >= 4) { bounds.Inflate(0,-2); // scoot down 2PX and start drawing } bounds.Width = 3; } else { if (bounds.Width >= 4) { bounds.Inflate(-2,0); // scoot over 2PX and start drawing } bounds.Height = 3; } RenderSmall3DBorderInternal(g, bounds, ToolBarState.Hot, (e.ToolStrip.RightToLeft == RightToLeft.Yes)); } } ////// /// Draw the items background /// protected override void OnRenderItemBackground(ToolStripItemRenderEventArgs e) { } ////// /// Draw the items background /// protected override void OnRenderImageMargin(ToolStripRenderEventArgs e) { } ////// /// Draw the button background /// protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { RenderItemInternal(e); } ////// /// Draw the button background /// protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e) { RenderItemInternal(e); } ////// /// Draw the button background /// protected override void OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs e) { ToolStripItem item = e.Item; Graphics g = e.Graphics; if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(VisualStyleElement.Rebar.Chevron.Normal)) { VisualStyleElement chevronElement = VisualStyleElement.Rebar.Chevron.Normal; VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(chevronElement.ClassName, chevronElement.Part, GetItemState(item)); vsRenderer.DrawBackground(g, new Rectangle(Point.Empty, item.Size)); } else { RenderItemInternal(e); Color arrowColor = item.Enabled ? SystemColors.ControlText : SystemColors.ControlDark; DrawArrow(new ToolStripArrowRenderEventArgs(g, item, new Rectangle(Point.Empty, item.Size), arrowColor, ArrowDirection.Down)); } } ////// /// Draw the button background /// protected override void OnRenderLabelBackground(ToolStripItemRenderEventArgs e) { RenderLabelInternal(e); } ////// /// Draw the items background /// protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { ToolStripMenuItem item = e.Item as ToolStripMenuItem; Graphics g = e.Graphics; if (item is MdiControlStrip.SystemMenuItem) { return; // no highlights are painted behind a system menu item } // if (item != null) { Rectangle bounds = new Rectangle(Point.Empty, item.Size); if (item.IsTopLevel && !ToolStripManager.VisualStylesEnabled) { // CLASSIC MODE (3D edges) // Draw box highlight for toplevel items in downlevel platforms if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, item.ContentRectangle, item.ContentRectangle); } else if (item.RawBackColor != Color.Empty) { FillBackground(g, item.ContentRectangle, item.BackColor); } // Toplevel menu items do 3D borders. ToolBarState state = GetToolBarState(item); RenderSmall3DBorderInternal(g, bounds, state, (item.RightToLeft == RightToLeft.Yes)); } else { // XP++ MODE (no 3D edges) // Draw blue filled highlight for toplevel items in themed platforms // or items parented to a drop down Rectangle fillRect = new Rectangle(Point.Empty, item.Size); if (item.IsOnDropDown) { // VSWhidbey 518568: scoot in by 2 pixels when selected fillRect.X += 2; fillRect.Width -= 3; //its already 1 away from the right edge } if (item.Selected || item.Pressed) { g.FillRectangle(SystemBrushes.Highlight, fillRect); } else { if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, item.ContentRectangle, fillRect); } else if (!ToolStripManager.VisualStylesEnabled && (item.RawBackColor != Color.Empty)) { FillBackground(g, fillRect, item.BackColor); } } } } } ////// /// Draws a toolbar separator. ToolStrip users should override this function to change the /// drawing of all separators. /// protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e) { RenderSeparatorInternal(e.Graphics, e.Item, new Rectangle(Point.Empty, e.Item.Size), e.Vertical); } ///protected override void OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs e) { RenderLabelInternal(e); ToolStripStatusLabel item = e.Item as ToolStripStatusLabel; ControlPaint.DrawBorder3D(e.Graphics, new Rectangle(0,0,item.Width-1, item.Height-1), item.BorderStyle, (Border3DSide)item.BorderSides); } /// /// /// Draw the item's background. /// protected override void OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs e) { ToolStripSplitButton splitButton = e.Item as ToolStripSplitButton; Graphics g = e.Graphics; bool rightToLeft = (splitButton.RightToLeft == RightToLeft.Yes); Color arrowColor = splitButton.Enabled ? SystemColors.ControlText : SystemColors.ControlDark; // in right to left - we need to swap the parts so we dont draw v][ toolStripSplitButton VisualStyleElement splitButtonDropDownPart = (rightToLeft) ? VisualStyleElement.ToolBar.SplitButton.Normal : VisualStyleElement.ToolBar.SplitButtonDropDown.Normal; VisualStyleElement splitButtonPart = (rightToLeft) ? VisualStyleElement.ToolBar.DropDownButton.Normal : VisualStyleElement.ToolBar.SplitButton.Normal; Rectangle bounds = new Rectangle(Point.Empty, splitButton.Size); if (ToolStripManager.VisualStylesEnabled && VisualStyleRenderer.IsElementDefined(splitButtonDropDownPart) && VisualStyleRenderer.IsElementDefined(splitButtonPart)) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; // Draw the SplitButton Button portion of it. vsRenderer.SetParameters(splitButtonPart.ClassName, splitButtonPart.Part, GetSplitButtonItemState(splitButton)); // the lovely Windows theming for split button comes in three pieces: // SplitButtonDropDown: [ v | // Separator: | // SplitButton: | ] // this is great except if you want to swap the button in RTL. In this case we need // to use the DropDownButton instead of the SplitButtonDropDown and paint the arrow ourselves. Rectangle splitButtonBounds = splitButton.ButtonBounds; if (rightToLeft) { // scoot to the left so we dont draw double shadow like so: ][ splitButtonBounds.Inflate(2,0); } // Draw the button portion of it. vsRenderer.DrawBackground(g, splitButtonBounds); // Draw the SplitButton DropDownButton portion of it. vsRenderer.SetParameters(splitButtonDropDownPart.ClassName, splitButtonDropDownPart.Part, GetSplitButtonDropDownItemState(splitButton)); // Draw the drop down button portion vsRenderer.DrawBackground(g, splitButton.DropDownButtonBounds); // fill in the background image Rectangle fillRect = splitButton.ContentRectangle; if (splitButton.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, splitButton.BackgroundImage, splitButton.BackColor, splitButton.BackgroundImageLayout, fillRect, fillRect); } // draw the separator over it. RenderSeparatorInternal(g,splitButton, splitButton.SplitterBounds, true); // and of course, now if we're in RTL we now need to paint the arrow // because we're no longer using a part that has it built in. if (rightToLeft || splitButton.BackgroundImage != null) { DrawArrow(new ToolStripArrowRenderEventArgs(g, splitButton, splitButton.DropDownButtonBounds, arrowColor, ArrowDirection.Down)); } } else { // Draw the split button button Rectangle splitButtonButtonRect = splitButton.ButtonBounds; if (splitButton.BackgroundImage != null) { // fill in the background image Rectangle fillRect = (splitButton.Selected) ? splitButton.ContentRectangle :bounds; if (splitButton.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, splitButton.BackgroundImage, splitButton.BackColor, splitButton.BackgroundImageLayout, bounds, fillRect); } } else { FillBackground(g,splitButtonButtonRect, splitButton.BackColor); } ToolBarState state = GetSplitButtonToolBarState(splitButton, false); RenderSmall3DBorderInternal(g, splitButtonButtonRect, state, rightToLeft); // draw the split button drop down Rectangle dropDownRect = splitButton.DropDownButtonBounds; // fill the color in the dropdown button if (splitButton.BackgroundImage == null) { FillBackground(g, dropDownRect, splitButton.BackColor); } state = GetSplitButtonToolBarState(splitButton, true); if ((state == ToolBarState.Pressed) || (state == ToolBarState.Hot)) { RenderSmall3DBorderInternal(g, dropDownRect, state, rightToLeft); } DrawArrow(new ToolStripArrowRenderEventArgs(g, splitButton, dropDownRect, arrowColor, ArrowDirection.Down)); } } ////// This exists mainly so that buttons, labels and items, etc can share the same implementation. /// If OnRenderButton called OnRenderItem we would never be able to change the implementation /// as it would be a breaking change. If in v1, the user overrode OnRenderItem to draw green triangles /// and in v2 we decided to add a feature to button that would require us to no longer call OnRenderItem - /// the user's version of OnRenderItem would not get called when he upgraded his framework. Hence /// everyone should just call this private shared method. Users need to override each item they want /// to change the look and feel of. /// private void RenderItemInternal(ToolStripItemRenderEventArgs e) { ToolStripItem item = e.Item; Graphics g = e.Graphics; ToolBarState state = GetToolBarState(item); VisualStyleElement toolBarElement = VisualStyleElement.ToolBar.Button.Normal; if (ToolStripManager.VisualStylesEnabled && (VisualStyleRenderer.IsElementDefined(toolBarElement))) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(toolBarElement.ClassName, toolBarElement.Part, (int)state); vsRenderer.DrawBackground(g, new Rectangle(Point.Empty, item.Size)); } else { RenderSmall3DBorderInternal(g, new Rectangle(Point.Empty, item.Size), state, (item.RightToLeft == RightToLeft.Yes)); } Rectangle fillRect = item.ContentRectangle; if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, fillRect, fillRect); } else { ToolStrip parent = item.GetCurrentParent(); if ((parent != null) && (state != ToolBarState.Checked) && (item.BackColor != parent.BackColor)) { FillBackground(g, fillRect, item.BackColor); } } } ////// private void RenderSeparatorInternal(Graphics g, ToolStripItem item, Rectangle bounds, bool vertical) { VisualStyleElement separator = (vertical) ? VisualStyleElement.ToolBar.SeparatorHorizontal.Normal : VisualStyleElement.ToolBar.SeparatorVertical.Normal; if (ToolStripManager.VisualStylesEnabled && (VisualStyleRenderer.IsElementDefined(separator))){ VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(separator.ClassName, separator.Part, GetItemState(item)); vsRenderer.DrawBackground(g, bounds); } else { Color foreColor = item.ForeColor; Color backColor = item.BackColor; Pen foreColorPen = SystemPens.ControlDark; bool disposeForeColorPen = GetPen(foreColor, ref foreColorPen); try { if (vertical) { if (bounds.Height >= 4) { bounds.Inflate(0,-2); // scoot down 2PX and start drawing } bool rightToLeft = (item.RightToLeft == RightToLeft.Yes); Pen leftPen = (rightToLeft) ? SystemPens.ButtonHighlight : foreColorPen; Pen rightPen = (rightToLeft) ? foreColorPen : SystemPens.ButtonHighlight; // Draw dark line int startX = bounds.Width / 2; g.DrawLine(leftPen, startX, bounds.Top, startX, bounds.Bottom); // Draw highlight one pixel to the right startX++; g.DrawLine(rightPen, startX, bounds.Top, startX, bounds.Bottom); } else { // // horizontal separator if (bounds.Width >= 4) { bounds.Inflate(-2,0); // scoot over 2PX and start drawing } // Draw dark line int startY = bounds.Height / 2; g.DrawLine(foreColorPen, bounds.Left, startY, bounds.Right, startY); // Draw highlight one pixel to the right startY++; g.DrawLine(SystemPens.ButtonHighlight, bounds.Left, startY, bounds.Right, startY); } } finally { if (disposeForeColorPen && foreColorPen != null) { foreColorPen.Dispose(); } } } } private void RenderSmall3DBorderInternal (Graphics g, Rectangle bounds, ToolBarState state, bool rightToLeft) { if ((state == ToolBarState.Hot) ||(state == ToolBarState.Pressed) || (state == ToolBarState.Checked)) { Pen leftPen, topPen, rightPen,bottomPen; topPen = (state == ToolBarState.Hot) ? SystemPens.ButtonHighlight : SystemPens.ButtonShadow; bottomPen = (state == ToolBarState.Hot)? SystemPens.ButtonShadow : SystemPens.ButtonHighlight; leftPen = (rightToLeft) ? bottomPen : topPen; rightPen = (rightToLeft) ? topPen : bottomPen; g.DrawLine(topPen, bounds.Left, bounds.Top, bounds.Right -1, bounds.Top); g.DrawLine(leftPen, bounds.Left, bounds.Top, bounds.Left, bounds.Bottom-1); g.DrawLine(rightPen, bounds.Right-1, bounds.Top, bounds.Right -1, bounds.Bottom-1); g.DrawLine(bottomPen, bounds.Left, bounds.Bottom-1, bounds.Right -1, bounds.Bottom -1); } } private void RenderStatusStripBorder(ToolStripRenderEventArgs e) { if (!Application.RenderWithVisualStyles) { e.Graphics.DrawLine(SystemPens.ButtonHighlight, 0,0,e.ToolStrip.Width, 0); } } private static void RenderStatusStripBackground(ToolStripRenderEventArgs e) { if (Application.RenderWithVisualStyles) { VisualStyleRenderer vsRenderer = VisualStyleRenderer; vsRenderer.SetParameters(VisualStyleElement.Status.Bar.Normal); vsRenderer.DrawBackground(e.Graphics,new Rectangle(0,0,e.ToolStrip.Width-1, e.ToolStrip.Height-1)); } else { if (!SystemInformation.InLockedTerminalSession()) { // see ddb#191714 e.Graphics.Clear(e.BackColor); } } } private static void RenderLabelInternal(ToolStripItemRenderEventArgs e) { // dont call RenderItemInternal, as we NEVER want to paint hot. ToolStripItem item = e.Item; Graphics g = e.Graphics; Rectangle fillRect = item.ContentRectangle; if (item.BackgroundImage != null) { ControlPaint.DrawBackgroundImage(g, item.BackgroundImage, item.BackColor, item.BackgroundImageLayout, fillRect, fillRect); } else { VisualStyleRenderer vsRenderer = VisualStyleRenderer; if (vsRenderer == null || (item.BackColor != SystemColors.Control)) { FillBackground(g, fillRect, item.BackColor); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CommonRemoteMemoryBlock.cs
- ElementMarkupObject.cs
- ConnectionManagementSection.cs
- ElementInit.cs
- LeaseManager.cs
- NumberSubstitution.cs
- VirtualPathProvider.cs
- RawStylusActions.cs
- CodeIdentifier.cs
- DataObjectPastingEventArgs.cs
- CustomAssemblyResolver.cs
- UpDownEvent.cs
- DesignerLoader.cs
- MaskedTextBox.cs
- NamespaceInfo.cs
- GeneratedView.cs
- CommandPlan.cs
- TypedTableBase.cs
- ExpressionHelper.cs
- DynamicDataExtensions.cs
- GeneralTransform3DGroup.cs
- EasingKeyFrames.cs
- ListDictionary.cs
- VisualStates.cs
- _NestedMultipleAsyncResult.cs
- ListViewPagedDataSource.cs
- Quaternion.cs
- CompositeTypefaceMetrics.cs
- MutexSecurity.cs
- ExpressionPrefixAttribute.cs
- ReferentialConstraintRoleElement.cs
- XmlDocumentSchema.cs
- WorkflowLayouts.cs
- StructuredProperty.cs
- ObjectDesignerDataSourceView.cs
- SecUtil.cs
- SQLDouble.cs
- EntityProxyFactory.cs
- SqlBulkCopyColumnMappingCollection.cs
- StreamWriter.cs
- WebPartZone.cs
- SessionPageStateSection.cs
- _Connection.cs
- wpf-etw.cs
- BitmapFrameDecode.cs
- UInt16Converter.cs
- DrawingGroupDrawingContext.cs
- TemplateField.cs
- DefaultMemberAttribute.cs
- IssuedTokenParametersElement.cs
- SchemaElementLookUpTable.cs
- SQLDecimalStorage.cs
- ModuleBuilderData.cs
- ClusterSafeNativeMethods.cs
- Rotation3DKeyFrameCollection.cs
- UriWriter.cs
- TrustManagerPromptUI.cs
- ReferenceEqualityComparer.cs
- TextProperties.cs
- ObjectDataProvider.cs
- IteratorFilter.cs
- StorageInfo.cs
- CodeMethodMap.cs
- AdapterUtil.cs
- ToolStripOverflow.cs
- ZipIOLocalFileDataDescriptor.cs
- BamlReader.cs
- XsltContext.cs
- Size.cs
- SeparatorAutomationPeer.cs
- _DomainName.cs
- Atom10FeedFormatter.cs
- SeekStoryboard.cs
- AtomEntry.cs
- ManagedWndProcTracker.cs
- SafeIUnknown.cs
- TargetException.cs
- XPathMessageFilterElementComparer.cs
- BamlWriter.cs
- MetadataImporterQuotas.cs
- BufferAllocator.cs
- ValueChangedEventManager.cs
- SqlClientMetaDataCollectionNames.cs
- XmlDataProvider.cs
- OleDbFactory.cs
- ProfilePropertyMetadata.cs
- GraphicsState.cs
- MsmqIntegrationSecurityElement.cs
- GridItemPattern.cs
- BooleanFacetDescriptionElement.cs
- HtmlInputSubmit.cs
- Frame.cs
- ExpressionBuilderCollection.cs
- PropertyFilterAttribute.cs
- LinkArea.cs
- InvalidCastException.cs
- TraceLog.cs
- TextMetrics.cs
- Bitmap.cs
- FtpWebRequest.cs