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
- IndentedTextWriter.cs
- UseManagedPresentationElement.cs
- CngKey.cs
- XsltConvert.cs
- ResXFileRef.cs
- FocusManager.cs
- HtmlTableCell.cs
- DefaultSerializationProviderAttribute.cs
- AppDomainAttributes.cs
- DateTimeEditor.cs
- EventSinkHelperWriter.cs
- ServerProtocol.cs
- CustomErrorsSection.cs
- DragEventArgs.cs
- AppSettingsReader.cs
- FixedPosition.cs
- DataRelation.cs
- CodeConstructor.cs
- ReceiveErrorHandling.cs
- RenderingEventArgs.cs
- ProcessThreadCollection.cs
- NotifyIcon.cs
- CodePrimitiveExpression.cs
- StylusShape.cs
- InitializerFacet.cs
- XsltInput.cs
- ParserStack.cs
- URLEditor.cs
- NotFiniteNumberException.cs
- TreeViewHitTestInfo.cs
- HtmlShimManager.cs
- AdministrationHelpers.cs
- ReachVisualSerializerAsync.cs
- X509UI.cs
- ObservableDictionary.cs
- TreeView.cs
- SystemColors.cs
- Quaternion.cs
- XPathNavigatorReader.cs
- XmlNodeReader.cs
- DaylightTime.cs
- IPAddressCollection.cs
- MdImport.cs
- PolyQuadraticBezierSegment.cs
- CategoryEditor.cs
- XmlC14NWriter.cs
- LoggedException.cs
- WindowsSpinner.cs
- BinaryUtilClasses.cs
- CqlQuery.cs
- EncryptedReference.cs
- KeyTime.cs
- ConfigXmlReader.cs
- SQLInt32Storage.cs
- QilXmlReader.cs
- NativeStructs.cs
- TriState.cs
- LineBreakRecord.cs
- DeobfuscatingStream.cs
- ClosableStream.cs
- GenerateTemporaryTargetAssembly.cs
- TemplateControlParser.cs
- MultipleViewPattern.cs
- SqlDataSourceWizardForm.cs
- ProtocolsConfigurationHandler.cs
- Line.cs
- FontNamesConverter.cs
- WindowsListViewScroll.cs
- SkewTransform.cs
- NameValuePermission.cs
- EmbeddedMailObjectsCollection.cs
- DesignerGenericWebPart.cs
- NumberFormatInfo.cs
- HttpCachePolicyElement.cs
- URI.cs
- Stacktrace.cs
- TemplateInstanceAttribute.cs
- XhtmlBasicCommandAdapter.cs
- XmlNodeReader.cs
- Debug.cs
- BitmapData.cs
- DataGridItem.cs
- ServiceDescription.cs
- SoapServerMethod.cs
- Int64AnimationBase.cs
- SafeCryptoHandles.cs
- jithelpers.cs
- DictionarySurrogate.cs
- EmptyStringExpandableObjectConverter.cs
- WindowsTab.cs
- UIElementCollection.cs
- PackUriHelper.cs
- XmlSchemaCollection.cs
- BookmarkScopeHandle.cs
- DynamicValueConverter.cs
- DataObjectMethodAttribute.cs
- SqlProviderManifest.cs
- XmlNamespaceDeclarationsAttribute.cs
- MutexSecurity.cs
- DesignerTextViewAdapter.cs