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
- sapiproxy.cs
- AutomationPatternInfo.cs
- LabelEditEvent.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- BinaryParser.cs
- AuthorizationRule.cs
- SettingsProviderCollection.cs
- XmlSchemaObjectTable.cs
- SynchronizingStream.cs
- TextChangedEventArgs.cs
- CodeNamespaceImportCollection.cs
- OleDbInfoMessageEvent.cs
- ActivityInterfaces.cs
- Cursors.cs
- SettingsAttributeDictionary.cs
- NonBatchDirectoryCompiler.cs
- JapaneseCalendar.cs
- InvalidComObjectException.cs
- XPathNodeHelper.cs
- ToolBarButtonDesigner.cs
- DataViewSettingCollection.cs
- TextTreeUndo.cs
- WebPartConnectionsConfigureVerb.cs
- TimeSpanValidator.cs
- AbandonedMutexException.cs
- FontCollection.cs
- MetabaseServerConfig.cs
- QueryContinueDragEvent.cs
- RangeBase.cs
- DispatchChannelSink.cs
- BaseCodeDomTreeGenerator.cs
- HttpApplication.cs
- Pkcs7Recipient.cs
- SecurityTokenContainer.cs
- PropertySet.cs
- LinqDataSourceValidationException.cs
- HtmlTableCell.cs
- ToolStripRenderEventArgs.cs
- RelationshipEntry.cs
- XmlDocumentType.cs
- MethodRental.cs
- StyleCollectionEditor.cs
- SymbolEqualComparer.cs
- WarningException.cs
- VBIdentifierName.cs
- ReadWriteObjectLock.cs
- CategoryAttribute.cs
- MenuAutoFormat.cs
- xmlfixedPageInfo.cs
- ContainerSelectorActiveEvent.cs
- XDRSchema.cs
- DrawingAttributes.cs
- TopClause.cs
- Blend.cs
- MULTI_QI.cs
- PrinterSettings.cs
- XmlChoiceIdentifierAttribute.cs
- ReadOnlyDictionary.cs
- SecurityIdentifierElement.cs
- InkCanvasFeedbackAdorner.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- DataControlCommands.cs
- ResourceReader.cs
- StyleReferenceConverter.cs
- RootBrowserWindowAutomationPeer.cs
- HtmlTableCell.cs
- __Filters.cs
- ClickablePoint.cs
- MimeBasePart.cs
- InstanceCreationEditor.cs
- TextEditorParagraphs.cs
- XamlGridLengthSerializer.cs
- DataDesignUtil.cs
- TimeSpan.cs
- CodeGeneratorOptions.cs
- BitmapDecoder.cs
- MenuAutomationPeer.cs
- IfJoinedCondition.cs
- SamlAudienceRestrictionCondition.cs
- NonVisualControlAttribute.cs
- RepeaterCommandEventArgs.cs
- ClaimTypeRequirement.cs
- ProgressChangedEventArgs.cs
- SrgsGrammar.cs
- QilXmlReader.cs
- BitmapFrame.cs
- TextEditorTables.cs
- DomainConstraint.cs
- ClassHandlersStore.cs
- ObjectCloneHelper.cs
- ServiceObjectContainer.cs
- DataGridViewTopLeftHeaderCell.cs
- SoapHeader.cs
- InheritedPropertyChangedEventArgs.cs
- ScrollPatternIdentifiers.cs
- EUCJPEncoding.cs
- TextDecorationCollection.cs
- MouseActionValueSerializer.cs
- IisNotInstalledException.cs
- MimeWriter.cs