Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / GroupBoxDesigner.cs / 1 / GroupBoxDesigner.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
//#define TESTVALUEUI
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.Design.GroupBoxDesigner..ctor()")]
namespace System.Windows.Forms.Design {
using System.Diagnostics;
using System;
using System.Design;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.Win32;
using System.ComponentModel;
using System.Drawing.Design;
using System.ComponentModel.Design;
using System.Collections;
///
///
/// This class handles all design time behavior for the group box class. Group
/// boxes may contain sub-components and therefore use the frame designer.
///
internal class GroupBoxDesigner : ParentControlDesigner {
private InheritanceUI inheritanceUI;
///
///
/// Determines the default location for a control added to this designer.
/// it is usualy (0,0), but may be modified if the container has special borders, etc.
///
protected override Point DefaultControlLocation {
get {
GroupBox gb = (GroupBox)this.Control;
return new Point(gb.DisplayRectangle.X,gb.DisplayRectangle.Y);
}
}
#if TESTVALUEUI
///
///
/// Initializes the designer with the given component. The designer can
/// get the component's site and request services from it in this call.
///
public override void Initialize(IComponent component) {
base.Initialize(component);
AutoResizeHandles = true;
IPropertyValueUIService pvUISvc = (IPropertyValueUIService)component.Site.GetService(typeof(IPropertyValueUIService));
if (pvUISvc != null) {
pvUISvc.AddPropertyValueUIHandler(new PropertyValueUIHandler(this.OnGetUIValueItem));
}
}
private void OnGetUIValueItem(object component, PropertyDescriptor propDesc, ArrayList valueUIItemList){
if (propDesc.PropertyType == typeof(string)) {
Bitmap bmp = new Bitmap(typeof(GroupBoxDesigner), "BoundProperty.bmp");
bmp.MakeTransparent();
valueUIItemList.Add(new LocalUIItem(bmp, new PropertyValueUIItemInvokeHandler(this.OnPropertyValueUIItemInvoke), "Data Can"));
//bmp = new Bitmap("BoundProperty.bmp");
valueUIItemList.Add(new LocalUIItem(bmp, new PropertyValueUIItemInvokeHandler(this.OnPropertyValueUIItemInvoke), "Little Button"));
}
}
private void OnPropertyValueUIItemInvoke(ITypeDescriptorContext context, PropertyDescriptor descriptor, PropertyValueUIItem invokedItem) {
Debug.Fail("propertyuivalue '" + invokedItem.ToolTip + "' invoked");
}
#endif
///
///
/// We override this because even though we still want to
/// offset our grid for our display rectangle, we still want
/// to align to our parent's grid - so we don't look funny
///
protected override void OnPaintAdornments(PaintEventArgs pe) {
if (DrawGrid) {
Control control = (Control)Control;
Rectangle rectangle = Control.DisplayRectangle;
rectangle.Width++; // gpr: FillRectangle with a TextureBrush comes up one pixel short
rectangle.Height++;
ControlPaint.DrawGrid(pe.Graphics, rectangle, GridSize, control.BackColor);
}
// If this control is being inherited, paint it
//
if (Inherited) {
if (inheritanceUI == null) {
inheritanceUI = (InheritanceUI)GetService(typeof(InheritanceUI));
}
if (inheritanceUI != null) {
pe.Graphics.DrawImage(inheritanceUI.InheritanceGlyph, 0, 0);
}
}
}
///
///
/// We override our base class's WndProc here because
/// the group box always returns HTTRANSPARENT. This
/// causes the mouse to go "through" the group box, but
/// that's not what we want at design time.
///
protected override void WndProc(ref Message m) {
switch (m.Msg) {
case NativeMethods.WM_NCHITTEST:
// The group box always fires HTTRANSPARENT, which
// causes the message to go to our parent. We want
// the group box's designer to get these messages, however,
// so change this.
//
base.WndProc(ref m);
if ((int)m.Result == NativeMethods.HTTRANSPARENT) {
m.Result = (IntPtr)NativeMethods.HTCLIENT;
}
break;
default:
base.WndProc(ref m);
break;
}
}
#if TESTVALUEUI
internal class LocalUIItem : PropertyValueUIItem {
private string itemName;
public LocalUIItem(Image img, PropertyValueUIItemInvokeHandler handler, string itemName) : base(img, handler, itemName) {
this.itemName = itemName;
}
}
#endif
}
}
// 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
- RenderCapability.cs
- HttpStreams.cs
- TreeNodeStyleCollection.cs
- SafeCryptoHandles.cs
- EventLogPermissionAttribute.cs
- UnmanagedMarshal.cs
- Processor.cs
- AgileSafeNativeMemoryHandle.cs
- JsonReaderWriterFactory.cs
- MultipleViewPattern.cs
- WebControlsSection.cs
- MetadataItem_Static.cs
- CqlLexer.cs
- QueryInterceptorAttribute.cs
- EmptyImpersonationContext.cs
- TemplatedEditableDesignerRegion.cs
- ListItem.cs
- EntityDataSourceWizardForm.cs
- ProcessHostMapPath.cs
- DataFormat.cs
- SyncOperationState.cs
- DataGridViewRowPrePaintEventArgs.cs
- WebPartConnectionCollection.cs
- EFDataModelProvider.cs
- AsyncOperationManager.cs
- ServiceChannel.cs
- DataTableClearEvent.cs
- EntityContainer.cs
- IResourceProvider.cs
- TraceHandlerErrorFormatter.cs
- HttpCacheVary.cs
- HandlerFactoryWrapper.cs
- Model3DGroup.cs
- CodeParameterDeclarationExpression.cs
- AuthenticationService.cs
- PrintDialogException.cs
- TypeLibraryHelper.cs
- FileUtil.cs
- Rotation3D.cs
- HttpModulesSection.cs
- CheckBoxField.cs
- ResponseBodyWriter.cs
- ThicknessAnimationBase.cs
- DPCustomTypeDescriptor.cs
- WindowsRebar.cs
- BindToObject.cs
- SafeViewOfFileHandle.cs
- EntityCommand.cs
- KeyEvent.cs
- SpeechSeg.cs
- _ScatterGatherBuffers.cs
- WebPartMovingEventArgs.cs
- DateTimeParse.cs
- WebPartPersonalization.cs
- Rect3D.cs
- SerializationInfo.cs
- XPathSelectionIterator.cs
- TableColumn.cs
- CryptoConfig.cs
- EntityContainerEmitter.cs
- QilVisitor.cs
- SoapAttributeAttribute.cs
- XmlQueryRuntime.cs
- SymLanguageType.cs
- AssemblyCache.cs
- Underline.cs
- EntityWithChangeTrackerStrategy.cs
- TreeNodeEventArgs.cs
- SmtpAuthenticationManager.cs
- LoginView.cs
- UIntPtr.cs
- DataChangedEventManager.cs
- TagPrefixAttribute.cs
- JsonUriDataContract.cs
- MsmqUri.cs
- IPAddress.cs
- GlyphCache.cs
- AttributeEmitter.cs
- Rule.cs
- XPathNavigatorKeyComparer.cs
- ECDsa.cs
- BaseTemplateParser.cs
- SrgsRulesCollection.cs
- PointConverter.cs
- DESCryptoServiceProvider.cs
- CroppedBitmap.cs
- CodeAttributeArgument.cs
- DataGridViewSelectedCellCollection.cs
- WindowsRegion.cs
- Registry.cs
- Typeface.cs
- StrokeNodeOperations.cs
- URL.cs
- EventLogConfiguration.cs
- Stack.cs
- EntryWrittenEventArgs.cs
- XAMLParseException.cs
- RuntimeConfigurationRecord.cs
- StringFormat.cs
- SplitterEvent.cs