Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / PropertyGridInternal / DropDownButton.cs / 1305376 / DropDownButton.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.PropertyGridInternal { using System.Diagnostics; using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; using System.Windows.Forms.ButtonInternal; using Microsoft.Win32; internal sealed class DropDownButton : Button { private bool useComboBoxTheme = false; private bool ignoreMouse; public DropDownButton() { SetStyle(ControlStyles.Selectable, true); this.AccessibleName = SR.GetString(SR.PropertyGridDropDownButtonAccessibleName); } // VSWhidbey 375220 - when the holder is open, we don't fire clicks // public bool IgnoreMouse { get { return ignoreMouse; } set { ignoreMouse = value; } } public bool UseComboBoxTheme { set { if (useComboBoxTheme != value) { useComboBoxTheme = value; Invalidate(); } } } protected override void OnClick(EventArgs e) { if (!IgnoreMouse) { base.OnClick(e); } } protected override void OnMouseUp(MouseEventArgs e) { if (!IgnoreMouse) { base.OnMouseUp(e); } } protected override void OnMouseDown(MouseEventArgs e) { if (!IgnoreMouse) { base.OnMouseDown(e); } } protected override void OnPaint(PaintEventArgs pevent) { base.OnPaint(pevent); if (Application.RenderWithVisualStyles & useComboBoxTheme) { ComboBoxState cbState = ComboBoxState.Normal; if (base.MouseIsDown) { cbState = ComboBoxState.Pressed; } else if (base.MouseIsOver) { cbState = ComboBoxState.Hot; } Rectangle dropDownButtonRect = new Rectangle(0, 0, Width, Height); if (cbState == ComboBoxState.Normal) { pevent.Graphics.FillRectangle(SystemBrushes.Window, dropDownButtonRect); } ComboBoxRenderer.DrawDropDownButton(pevent.Graphics, dropDownButtonRect, cbState); } } internal override ButtonBaseAdapter CreateStandardAdapter() { return new DropDownButtonAdapter(this); } } internal class DropDownButtonAdapter : ButtonStandardAdapter { internal DropDownButtonAdapter(ButtonBase control) : base(control) {} private void DDB_Draw3DBorder(System.Drawing.Graphics g, Rectangle r, bool raised) { if (Control.BackColor != SystemColors.Control && SystemInformation.HighContrast) { if (raised) { Color c = ControlPaint.LightLight(Control.BackColor); ControlPaint.DrawBorder(g, r, c, 1, ButtonBorderStyle.Outset, c, 1, ButtonBorderStyle.Outset, c, 2, ButtonBorderStyle.Inset, c, 2, ButtonBorderStyle.Inset); } else { ControlPaint.DrawBorder(g, r, ControlPaint.Dark(Control.BackColor), ButtonBorderStyle.Solid); } } else { if (raised) { Color c = ControlPaint.Light(Control.BackColor); ControlPaint.DrawBorder(g, r, c, 1, ButtonBorderStyle.Solid, c, 1, ButtonBorderStyle.Solid, Control.BackColor, 2, ButtonBorderStyle.Outset, Control.BackColor, 2, ButtonBorderStyle.Outset); Rectangle inside = r; inside.Offset(1,1); inside.Width -= 3; inside.Height -= 3; c = ControlPaint.LightLight(Control.BackColor); ControlPaint.DrawBorder(g, inside, c, 1, ButtonBorderStyle.Solid, c, 1, ButtonBorderStyle.Solid, c, 1, ButtonBorderStyle.None, c, 1, ButtonBorderStyle.None); } else { ControlPaint.DrawBorder(g, r, ControlPaint.Dark(Control.BackColor), ButtonBorderStyle.Solid); } } } internal override void PaintUp(PaintEventArgs pevent, CheckState state) { base.PaintUp(pevent, state); if (!Application.RenderWithVisualStyles) { DDB_Draw3DBorder(pevent.Graphics, Control.ClientRectangle, true); } else { Color c = SystemColors.Window; Rectangle rect = Control.ClientRectangle; rect.Inflate(0, -1); ControlPaint.DrawBorder(pevent.Graphics, rect, c, 1, ButtonBorderStyle.None, c, 1, ButtonBorderStyle.None, c, 1, ButtonBorderStyle.Solid, c, 1, ButtonBorderStyle.None); } } internal override void DrawImageCore(Graphics graphics, Image image, Rectangle imageBounds, Point imageStart, ButtonBaseAdapter.LayoutData layout) { ControlPaint.DrawImageReplaceColor(graphics, image, imageBounds, Color.Black, Control.ForeColor); //ControlPaint.DrawImageColorized(graphics, image, imageBounds , Control.ForeColor); } } } // 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
- Crypto.cs
- SqlConnectionString.cs
- UriTemplateMatch.cs
- LinqExpressionNormalizer.cs
- UiaCoreTypesApi.cs
- SqlReorderer.cs
- GACIdentityPermission.cs
- TextSerializer.cs
- DataGridViewToolTip.cs
- XmlNodeReader.cs
- IdentityNotMappedException.cs
- IFlowDocumentViewer.cs
- ViewCellRelation.cs
- CancellationTokenSource.cs
- ComplexTypeEmitter.cs
- PropertyTab.cs
- DataListItemCollection.cs
- Vector3D.cs
- FixedSOMLineCollection.cs
- HttpCapabilitiesEvaluator.cs
- WebRequestModulesSection.cs
- RowVisual.cs
- SubMenuStyleCollectionEditor.cs
- SafeNativeMethods.cs
- WindowsNonControl.cs
- EditorAttribute.cs
- SystemIcons.cs
- Rijndael.cs
- GridProviderWrapper.cs
- IntPtr.cs
- ModelFunction.cs
- StaticFileHandler.cs
- ThousandthOfEmRealDoubles.cs
- AlternateView.cs
- SecurityDescriptor.cs
- GridViewCellAutomationPeer.cs
- XmlSiteMapProvider.cs
- ImmutableObjectAttribute.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- PassportAuthenticationModule.cs
- ConcurrencyBehavior.cs
- HttpChannelBindingToken.cs
- SecureConversationDriver.cs
- Point3DCollectionConverter.cs
- CasesDictionary.cs
- ManagementInstaller.cs
- GlyphingCache.cs
- WebContext.cs
- RtType.cs
- InvalidDataException.cs
- ErrorItem.cs
- GridViewSortEventArgs.cs
- SessionStateContainer.cs
- PartialCachingAttribute.cs
- MSAAWinEventWrap.cs
- UserControlCodeDomTreeGenerator.cs
- QuinticEase.cs
- EventDrivenDesigner.cs
- RotationValidation.cs
- XsltContext.cs
- DefaultCommandExtensionCallback.cs
- HeaderedItemsControl.cs
- OpenFileDialog.cs
- VirtualPathUtility.cs
- KerberosTicketHashIdentifierClause.cs
- HtmlElementEventArgs.cs
- SslStreamSecurityBindingElement.cs
- BadImageFormatException.cs
- ValidationError.cs
- ByeMessageCD1.cs
- CqlLexerHelpers.cs
- objectresult_tresulttype.cs
- EntityStoreSchemaFilterEntry.cs
- ActivityDesignerResources.cs
- SiteMapPath.cs
- ImmutableCollection.cs
- ClientFormsAuthenticationCredentials.cs
- _SslState.cs
- BinaryConverter.cs
- ListDictionary.cs
- Bits.cs
- HtmlUtf8RawTextWriter.cs
- ApplicationInfo.cs
- FixedSOMTable.cs
- XmlResolver.cs
- activationcontext.cs
- TableCellAutomationPeer.cs
- InvokeGenerator.cs
- DiagnosticTrace.cs
- TableParagraph.cs
- ReachPageContentCollectionSerializerAsync.cs
- _SSPIWrapper.cs
- SchemaComplexType.cs
- webclient.cs
- DesignColumn.cs
- ImageSourceConverter.cs
- TablePattern.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- EFColumnProvider.cs
- SmiRecordBuffer.cs