Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / Behavior / SelectionBorderGlyph.cs / 1 / SelectionBorderGlyph.cs
namespace System.Windows.Forms.Design.Behavior {
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Design;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms.Design;
///
///
/// The SelectionBorderGlyph draws one side (depending on type) of a SelectionBorder.
///
internal class SelectionBorderGlyph : SelectionGlyphBase {
///
///
/// This constructor extends from the standard SelectionGlyphBase constructor.
///
internal SelectionBorderGlyph(Rectangle controlBounds, SelectionRules rules, SelectionBorderGlyphType type, Behavior behavior) : base(behavior) {
InitializeGlyph(controlBounds, rules, type);
}
///
/// Helper function that initializes the Glyph based on bounds, type, and bordersize.
///
private void InitializeGlyph(Rectangle controlBounds, SelectionRules selRules, SelectionBorderGlyphType type) {
rules = SelectionRules.None;
hitTestCursor = Cursors.Default;
//this will return the rect representing the bounds of the glyph
bounds = DesignerUtils.GetBoundsForSelectionType(controlBounds, type);
hitBounds = bounds;
// The hitbounds for the border is actually a bit bigger than the glyph bounds
switch (type) {
case SelectionBorderGlyphType.Top:
if ((selRules & SelectionRules.TopSizeable) != 0) {
hitTestCursor = Cursors.SizeNS;
rules = SelectionRules.TopSizeable;
}
// We want to apply the SELECTIONBORDERHITAREA to the top and the bottom of the selection border glyph
hitBounds.Y -= (DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE) / 2;
hitBounds.Height += DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE;
break;
case SelectionBorderGlyphType.Bottom:
if ((selRules & SelectionRules.BottomSizeable) != 0) {
hitTestCursor = Cursors.SizeNS;
rules = SelectionRules.BottomSizeable;
}
// We want to apply the SELECTIONBORDERHITAREA to the top and the bottom of the selection border glyph
hitBounds.Y -= (DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE) / 2;
hitBounds.Height += DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE;
break;
case SelectionBorderGlyphType.Left:
if ((selRules & SelectionRules.LeftSizeable) != 0) {
hitTestCursor = Cursors.SizeWE;
rules = SelectionRules.LeftSizeable;
}
// We want to apply the SELECTIONBORDERHITAREA to the left and the right of the selection border glyph
hitBounds.X -= (DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE) / 2;
hitBounds.Width += DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE;
break;
case SelectionBorderGlyphType.Right:
if ((selRules & SelectionRules.RightSizeable) != 0) {
hitTestCursor = Cursors.SizeWE;
rules = SelectionRules.RightSizeable;
}
// We want to apply the SELECTIONBORDERHITAREA to the left and the right of the selection border glyph
hitBounds.X -= (DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE) / 2;
hitBounds.Width += DesignerUtils.SELECTIONBORDERHITAREA - DesignerUtils.SELECTIONBORDERSIZE;
break;
}
}
///
///
/// Simple painting logic for selection Glyphs.
///
public override void Paint(PaintEventArgs pe) {
DesignerUtils.DrawSelectionBorder(pe.Graphics, bounds);
}
}
}
// 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
- xsdvalidator.cs
- UTF7Encoding.cs
- CallTemplateAction.cs
- SelectionRangeConverter.cs
- EventMappingSettingsCollection.cs
- RenderDataDrawingContext.cs
- InstalledVoice.cs
- ExpressionTable.cs
- SystemPens.cs
- CommonObjectSecurity.cs
- ByteRangeDownloader.cs
- Journal.cs
- UnsafeMethods.cs
- TableLayout.cs
- InputLanguageCollection.cs
- XmlNamedNodeMap.cs
- WhitespaceReader.cs
- ValueSerializerAttribute.cs
- PersonalizationProvider.cs
- SqlResolver.cs
- DataBoundControlHelper.cs
- CreateUserWizardStep.cs
- RoleProviderPrincipal.cs
- MessageQueueEnumerator.cs
- BamlBinaryReader.cs
- SqlMethods.cs
- ProtocolsSection.cs
- GeometryCollection.cs
- SmiEventSink_DeferedProcessing.cs
- EnumerableCollectionView.cs
- DesignerLoader.cs
- ResourceManager.cs
- FileEnumerator.cs
- EventProperty.cs
- AdornerHitTestResult.cs
- SelectionList.cs
- Axis.cs
- OutputChannelBinder.cs
- SqlCacheDependency.cs
- DBParameter.cs
- Symbol.cs
- SchemaImporter.cs
- SchemaImporterExtensionsSection.cs
- BookmarkNameHelper.cs
- EmbeddedMailObjectCollectionEditor.cs
- StdValidatorsAndConverters.cs
- TrustSection.cs
- Container.cs
- IncomingWebResponseContext.cs
- ExeConfigurationFileMap.cs
- OleDbTransaction.cs
- NumericUpDownAccelerationCollection.cs
- CustomErrorsSection.cs
- FileUtil.cs
- CodeSnippetCompileUnit.cs
- PageCodeDomTreeGenerator.cs
- WebPartVerb.cs
- XhtmlTextWriter.cs
- ConfigViewGenerator.cs
- FactoryRecord.cs
- Stroke.cs
- WebSysDescriptionAttribute.cs
- ProcessExitedException.cs
- ConstraintConverter.cs
- FixedPageProcessor.cs
- CreateUserErrorEventArgs.cs
- HyperLinkColumn.cs
- X509SubjectKeyIdentifierClause.cs
- Header.cs
- RegisteredDisposeScript.cs
- ToolTipAutomationPeer.cs
- XmlToDatasetMap.cs
- WaitHandleCannotBeOpenedException.cs
- XPathDocumentNavigator.cs
- DeleteCardRequest.cs
- MultiTargetingUtil.cs
- DataObject.cs
- sqlstateclientmanager.cs
- EdmSchemaAttribute.cs
- NetCodeGroup.cs
- KeyGestureValueSerializer.cs
- MetadataItem_Static.cs
- WebPartEventArgs.cs
- TrustLevel.cs
- ConstraintCollection.cs
- SqlCachedBuffer.cs
- ClientConfigurationHost.cs
- ColumnWidthChangingEvent.cs
- AssemblyInfo.cs
- ArrayItemValue.cs
- FontDriver.cs
- SystemIPv6InterfaceProperties.cs
- CompilationSection.cs
- MiniConstructorInfo.cs
- EventWaitHandle.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- _Events.cs
- DocumentAutomationPeer.cs
- StringUtil.cs