Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / Util / AutoSizeComboBox.cs / 1 / AutoSizeComboBox.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.Util { using System; using System.Design; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Design; ////// Helper class to automatically resize the dropdown part of a ComboBox /// to fit the widest item. /// Note that if you modify the Items collection of the control, you will /// have to call InvalidateDropDownWidth so that it will be auto-resized /// the next time the combobox is dropped down. /// internal sealed class AutoSizeComboBox : ComboBox { private const int MaxDropDownWidth = 600; private bool _dropDownWidthValid; private void AutoSizeComboBoxDropDown() { int maxWidth = 0; using (Graphics g = Graphics.FromImage(new Bitmap(1, 1))) { foreach (object o in Items) { if (o != null) { Size size = g.MeasureString(o.ToString(), Font, 0, new StringFormat(StringFormatFlags.NoWrap | StringFormatFlags.FitBlackBox)).ToSize(); maxWidth = Math.Max(maxWidth, size.Width); if (maxWidth >= MaxDropDownWidth) { maxWidth = MaxDropDownWidth; break; } } } } int newWidth = maxWidth + SystemInformation.VerticalScrollBarWidth + 2 * SystemInformation.BorderSize.Width; // This is a cheap hack to workaround the fact that the WinForms ComboBox // doesn't send a CB_SETDROPPEDWIDTH message to the control unless the value // has changed. We have to always send the message since the effective value // of the drop down width may have changed due to the width of the combobox // itself changing, and we want the new value. DropDownWidth = newWidth + 1; DropDownWidth = newWidth; } public void InvalidateDropDownWidth() { _dropDownWidthValid = false; } protected override void OnDropDown(EventArgs e) { if (!_dropDownWidthValid) { AutoSizeComboBoxDropDown(); _dropDownWidthValid = true; } base.OnDropDown(e); } protected override void OnSizeChanged(EventArgs e) { base.OnSizeChanged(e); _dropDownWidthValid = false; } } } // 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
- Vector3DCollectionConverter.cs
- _HTTPDateParse.cs
- DateTimeOffsetConverter.cs
- shaperfactoryquerycacheentry.cs
- InternalConfigHost.cs
- ThreadAbortException.cs
- SiteMembershipCondition.cs
- MetaModel.cs
- PreviewPrintController.cs
- XmlEventCache.cs
- LayoutExceptionEventArgs.cs
- SerializationInfo.cs
- ToolStripPanelSelectionBehavior.cs
- PageContent.cs
- State.cs
- ConstrainedDataObject.cs
- SamlEvidence.cs
- MimeTextImporter.cs
- IntPtr.cs
- InvalidPrinterException.cs
- ToolstripProfessionalRenderer.cs
- DataBoundLiteralControl.cs
- WinEventQueueItem.cs
- FacetValueContainer.cs
- SpeechEvent.cs
- InProcStateClientManager.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- SystemIPv4InterfaceProperties.cs
- TextBoxBase.cs
- UnsupportedPolicyOptionsException.cs
- Parallel.cs
- DebugHandleTracker.cs
- shaperfactory.cs
- ViewCellRelation.cs
- StringDictionary.cs
- PrinterUnitConvert.cs
- Expressions.cs
- EnvironmentPermission.cs
- SymLanguageType.cs
- NamedPipeAppDomainProtocolHandler.cs
- GeometryHitTestResult.cs
- baseaxisquery.cs
- ConnectionPoint.cs
- DropDownList.cs
- MarkupWriter.cs
- XamlWriter.cs
- ObjectQuery_EntitySqlExtensions.cs
- GetCertificateRequest.cs
- CodeChecksumPragma.cs
- SqlConnectionHelper.cs
- CardSpaceException.cs
- RuntimeConfigLKG.cs
- WorkItem.cs
- TargetParameterCountException.cs
- dtdvalidator.cs
- DataServiceHostFactory.cs
- AssociationType.cs
- XPathNavigator.cs
- StandardTransformFactory.cs
- MimePart.cs
- CodeDomLocalizationProvider.cs
- TypeListConverter.cs
- ViewStateModeByIdAttribute.cs
- Rotation3DAnimationBase.cs
- DBParameter.cs
- ColorConverter.cs
- TextBoxView.cs
- DesignerWebPartChrome.cs
- HtmlInputPassword.cs
- BooleanKeyFrameCollection.cs
- ScrollItemProviderWrapper.cs
- UniformGrid.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- DataGridViewCellCollection.cs
- SimpleTypesSurrogate.cs
- MarginCollapsingState.cs
- CompareValidator.cs
- PenLineJoinValidation.cs
- tibetanshape.cs
- AddInToken.cs
- Vector3dCollection.cs
- PropertyRef.cs
- CompositeFontParser.cs
- HtmlTableCell.cs
- AttributeData.cs
- AsyncResult.cs
- WindowsRegion.cs
- _AutoWebProxyScriptHelper.cs
- EndEvent.cs
- RIPEMD160.cs
- XmlSchemaSimpleContentExtension.cs
- BitmapEncoder.cs
- ArrayWithOffset.cs
- HtmlWindow.cs
- SchemaTableOptionalColumn.cs
- OleDbPermission.cs
- StructureChangedEventArgs.cs
- CustomAttributeSerializer.cs
- AssemblyBuilder.cs
- ButtonFlatAdapter.cs