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
- CodeDOMProvider.cs
- ClassDataContract.cs
- TypeUtils.cs
- ActivityDesignerHighlighter.cs
- GridViewRowEventArgs.cs
- SoapExtensionStream.cs
- AttributeQuery.cs
- EventHandlersDesigner.cs
- HttpListenerPrefixCollection.cs
- PrtTicket_Public.cs
- SqlBinder.cs
- MailSettingsSection.cs
- ValidationErrorCollection.cs
- EnumerableRowCollectionExtensions.cs
- ManipulationStartedEventArgs.cs
- ResourceAttributes.cs
- RegistrySecurity.cs
- _TimerThread.cs
- NameValueCollection.cs
- WindowsServiceElement.cs
- DnsEndpointIdentity.cs
- DtdParser.cs
- IisTraceListener.cs
- CompositeFontFamily.cs
- MenuAutoFormat.cs
- ProtocolsConfigurationEntry.cs
- UrlPath.cs
- ReferenceEqualityComparer.cs
- StrokeNodeOperations.cs
- Helpers.cs
- AbstractSvcMapFileLoader.cs
- LabelEditEvent.cs
- DescendantQuery.cs
- OleDbPermission.cs
- DefaultAsyncDataDispatcher.cs
- ResXBuildProvider.cs
- BinaryFormatterWriter.cs
- SourceSwitch.cs
- TextElementEditingBehaviorAttribute.cs
- ExtractorMetadata.cs
- DiscoveryClientDocuments.cs
- HttpFormatExtensions.cs
- DBCommand.cs
- XmlSerializerNamespaces.cs
- SecurityKeyType.cs
- SmiEventSink_Default.cs
- HttpPostProtocolImporter.cs
- OletxTransactionManager.cs
- ActivationServices.cs
- KnownTypes.cs
- DesignerSerializerAttribute.cs
- TextMessageEncodingElement.cs
- ConditionBrowserDialog.cs
- RandomDelayQueuedSendsAsyncResult.cs
- AppSettingsExpressionBuilder.cs
- TrackingStringDictionary.cs
- ProcessStartInfo.cs
- Point4D.cs
- SaveFileDialogDesigner.cs
- XmlSchemas.cs
- SqlClientFactory.cs
- GPRECT.cs
- SimpleWorkerRequest.cs
- Matrix3DConverter.cs
- XmlDownloadManager.cs
- SqlAliaser.cs
- SymbolType.cs
- ClientFactory.cs
- GenericsInstances.cs
- MSAAWinEventWrap.cs
- HttpCachePolicyBase.cs
- AnonymousIdentificationSection.cs
- ProjectionRewriter.cs
- LayoutTable.cs
- COM2ColorConverter.cs
- VideoDrawing.cs
- PropagationProtocolsTracing.cs
- ExpressionVisitorHelpers.cs
- LinkConverter.cs
- Expression.cs
- SoapAttributes.cs
- IdentityModelDictionary.cs
- CodeAttachEventStatement.cs
- InstanceLockedException.cs
- ClientSettingsSection.cs
- PrintSystemException.cs
- NewArrayExpression.cs
- LinqToSqlWrapper.cs
- WebPartZoneCollection.cs
- CodeStatement.cs
- InkCollectionBehavior.cs
- HttpClientCertificate.cs
- ObjectContextServiceProvider.cs
- ImageSource.cs
- ScrollContentPresenter.cs
- ToolStripDropTargetManager.cs
- ContextMenuStripGroupCollection.cs
- UrlPropertyAttribute.cs
- WebCategoryAttribute.cs
- TimeSpanSecondsOrInfiniteConverter.cs