Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / PropertyGridInternal / DropDownButton.cs / 1 / 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; } ComboBoxRenderer.DrawDropDownButton(pevent.Graphics, new Rectangle(0,0,Width,Height), 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RegexRunner.cs
- XmlSignificantWhitespace.cs
- EntitySqlQueryState.cs
- ObjectSecurity.cs
- WinInet.cs
- ObjectStateFormatter.cs
- DataListCommandEventArgs.cs
- DataGridViewComboBoxEditingControl.cs
- WaitHandleCannotBeOpenedException.cs
- PathFigureCollection.cs
- BlobPersonalizationState.cs
- EntityDescriptor.cs
- ImageSource.cs
- WCFBuildProvider.cs
- ColorTransform.cs
- SizeAnimationClockResource.cs
- ImageFormat.cs
- PropertyPushdownHelper.cs
- OpacityConverter.cs
- ToolBarDesigner.cs
- BinaryUtilClasses.cs
- WindowsContainer.cs
- BoundField.cs
- DelegateBodyWriter.cs
- IDQuery.cs
- FacetValues.cs
- SessionStateContainer.cs
- ConfigXmlCDataSection.cs
- ActivityPreviewDesigner.cs
- RequestUriProcessor.cs
- Point4DConverter.cs
- StrokeFIndices.cs
- XmlUtil.cs
- AudioFileOut.cs
- TimeEnumHelper.cs
- NetworkCredential.cs
- PageBreakRecord.cs
- ToolStripGripRenderEventArgs.cs
- GroupQuery.cs
- FontDriver.cs
- ActiveXHost.cs
- TextRangeSerialization.cs
- StructuredType.cs
- JsonDeserializer.cs
- XmlSchemaAttributeGroup.cs
- FlowDocumentReaderAutomationPeer.cs
- Region.cs
- RegularExpressionValidator.cs
- ObjectIDGenerator.cs
- _ConnectOverlappedAsyncResult.cs
- PackageProperties.cs
- SspiSecurityTokenProvider.cs
- MissingMethodException.cs
- SchemeSettingElementCollection.cs
- OrderedParallelQuery.cs
- IBuiltInEvidence.cs
- WebResourceAttribute.cs
- Privilege.cs
- TableLayout.cs
- EntityContainerEmitter.cs
- FlowDocumentScrollViewer.cs
- ExpandButtonVisibilityConverter.cs
- PlatformCulture.cs
- IsolatedStorageFile.cs
- ObjectDataSourceStatusEventArgs.cs
- Panel.cs
- XsdValidatingReader.cs
- XsdBuilder.cs
- WSTrustFeb2005.cs
- AnnotationObservableCollection.cs
- SingleKeyFrameCollection.cs
- SmtpNtlmAuthenticationModule.cs
- MeasureData.cs
- HitTestWithPointDrawingContextWalker.cs
- Base64WriteStateInfo.cs
- DocumentOrderComparer.cs
- PenLineJoinValidation.cs
- ActivitySurrogateSelector.cs
- ChangePasswordAutoFormat.cs
- InvalidEnumArgumentException.cs
- InstallerTypeAttribute.cs
- WebControl.cs
- MissingSatelliteAssemblyException.cs
- WebPartMinimizeVerb.cs
- RawStylusInputCustomDataList.cs
- ButtonFieldBase.cs
- EntitySetBaseCollection.cs
- HttpHandlerActionCollection.cs
- Opcode.cs
- _BaseOverlappedAsyncResult.cs
- sqlcontext.cs
- SerializableAttribute.cs
- MetadataArtifactLoader.cs
- CodeMemberField.cs
- ObjectItemCachedAssemblyLoader.cs
- AbstractDataSvcMapFileLoader.cs
- XamlClipboardData.cs
- ErrorItem.cs
- AdRotator.cs
- ManagementOptions.cs