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
- OptimisticConcurrencyException.cs
- MaskDesignerDialog.cs
- BamlCollectionHolder.cs
- SqlParameter.cs
- OracleSqlParser.cs
- StrongNameUtility.cs
- DefaultBinder.cs
- FixedSOMGroup.cs
- ImageSource.cs
- QilScopedVisitor.cs
- Model3D.cs
- CodeMethodMap.cs
- TextWriterTraceListener.cs
- FixedFlowMap.cs
- JulianCalendar.cs
- UidManager.cs
- ExpressionBuilderCollection.cs
- Table.cs
- SapiInterop.cs
- SiteMembershipCondition.cs
- VisualStyleRenderer.cs
- CodeObjectCreateExpression.cs
- RenderData.cs
- CircleHotSpot.cs
- TextElementAutomationPeer.cs
- XDRSchema.cs
- Operand.cs
- Shape.cs
- ColumnCollectionEditor.cs
- AttachedPropertyMethodSelector.cs
- ServiceModelConfigurationSection.cs
- UseLicense.cs
- ParameterCollectionEditor.cs
- NetSectionGroup.cs
- XPathDocumentNavigator.cs
- CopyOfAction.cs
- BaseTemplateBuildProvider.cs
- ServiceOperationListItem.cs
- AsyncOperationManager.cs
- VideoDrawing.cs
- MULTI_QI.cs
- ButtonPopupAdapter.cs
- SpotLight.cs
- DataGridViewRow.cs
- HeaderLabel.cs
- _ChunkParse.cs
- InfiniteIntConverter.cs
- EmptyEnumerator.cs
- EventsTab.cs
- ViewKeyConstraint.cs
- WS2007HttpBindingCollectionElement.cs
- SliderAutomationPeer.cs
- PauseStoryboard.cs
- Form.cs
- __TransparentProxy.cs
- _BaseOverlappedAsyncResult.cs
- AssociationTypeEmitter.cs
- HandleCollector.cs
- ToolStripStatusLabel.cs
- BaseCollection.cs
- Positioning.cs
- ElementHostAutomationPeer.cs
- OneOfTypeConst.cs
- ReliableSessionBindingElementImporter.cs
- ChtmlFormAdapter.cs
- TableSectionStyle.cs
- GridViewCommandEventArgs.cs
- EmbeddedObject.cs
- ArgumentFixer.cs
- FixedSOMPageElement.cs
- GradientBrush.cs
- Int32CAMarshaler.cs
- ArgumentOutOfRangeException.cs
- BackStopAuthenticationModule.cs
- PrtCap_Reader.cs
- Int32EqualityComparer.cs
- SqlAliasesReferenced.cs
- MobileComponentEditorPage.cs
- SqlClientMetaDataCollectionNames.cs
- DES.cs
- CmsInterop.cs
- SequentialUshortCollection.cs
- TokenBasedSet.cs
- PathStreamGeometryContext.cs
- ProxyGenerationError.cs
- SystemIcmpV6Statistics.cs
- BuildProvidersCompiler.cs
- CodeAccessPermission.cs
- GestureRecognizer.cs
- HttpCookie.cs
- CodePageUtils.cs
- Debug.cs
- BitSet.cs
- FixUpCollection.cs
- ConnectAlgorithms.cs
- DelegateBodyWriter.cs
- MobileControl.cs
- SiteOfOriginContainer.cs
- ExpressionWriter.cs
- DataDocumentXPathNavigator.cs