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
- CompiledXpathExpr.cs
- AuthorizationRuleCollection.cs
- Label.cs
- MetaDataInfo.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- UriTemplateMatchException.cs
- HtmlElement.cs
- OdbcReferenceCollection.cs
- ExpressionSelection.cs
- Misc.cs
- RootBuilder.cs
- SeverityFilter.cs
- Brushes.cs
- TextContainer.cs
- TemplatePagerField.cs
- StrongNamePublicKeyBlob.cs
- ButtonBaseAutomationPeer.cs
- CompiledQueryCacheEntry.cs
- AnonymousIdentificationSection.cs
- shaper.cs
- RegexCapture.cs
- DataGridViewComboBoxColumn.cs
- DBConnectionString.cs
- PolygonHotSpot.cs
- EngineSiteSapi.cs
- ServiceTimeoutsElement.cs
- ByteArrayHelperWithString.cs
- TypeUsageBuilder.cs
- ClipboardData.cs
- ChannelServices.cs
- XmlDocumentType.cs
- ElapsedEventArgs.cs
- ProgressiveCrcCalculatingStream.cs
- WebEventTraceProvider.cs
- InfiniteIntConverter.cs
- SessionSymmetricMessageSecurityProtocolFactory.cs
- HttpGetServerProtocol.cs
- ToolStripGrip.cs
- PropertyGeneratedEventArgs.cs
- TraceContextRecord.cs
- OutOfProcStateClientManager.cs
- CapabilitiesState.cs
- Msmq3PoisonHandler.cs
- PersonalizationStateInfo.cs
- Certificate.cs
- DefinitionUpdate.cs
- ParameterBuilder.cs
- DataGridViewColumn.cs
- SessionStateSection.cs
- ZoneMembershipCondition.cs
- Latin1Encoding.cs
- CanExecuteRoutedEventArgs.cs
- StringValidator.cs
- DataServiceQueryProvider.cs
- Visual3D.cs
- ProviderBase.cs
- StylusPointProperty.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CommonGetThemePartSize.cs
- XPathException.cs
- UriTemplateHelpers.cs
- StorageScalarPropertyMapping.cs
- ImportOptions.cs
- WebPartAuthorizationEventArgs.cs
- CmsInterop.cs
- WriteTimeStream.cs
- RegexRunner.cs
- EventLogRecord.cs
- SafeHandle.cs
- TiffBitmapDecoder.cs
- DefaultValueAttribute.cs
- ThrowHelper.cs
- DetailsViewPagerRow.cs
- TemplateControl.cs
- FixedTextSelectionProcessor.cs
- DocumentCollection.cs
- SmtpSection.cs
- MemberListBinding.cs
- GlyphRun.cs
- ColumnResizeAdorner.cs
- HttpRawResponse.cs
- EventManager.cs
- FolderBrowserDialog.cs
- IPAddress.cs
- SiteMapHierarchicalDataSourceView.cs
- TdsParserStaticMethods.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- Visual3D.cs
- HTMLTextWriter.cs
- GAC.cs
- ListBindingConverter.cs
- DrawingGroup.cs
- JsonEnumDataContract.cs
- XPathAncestorQuery.cs
- ControlPropertyNameConverter.cs
- TimelineGroup.cs
- DesignTimeTemplateParser.cs
- GroupItem.cs
- TreeViewEvent.cs
- Misc.cs