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
- ReadOnlyTernaryTree.cs
- ColumnWidthChangingEvent.cs
- login.cs
- CollectionChangeEventArgs.cs
- ProjectionQueryOptionExpression.cs
- CompilationLock.cs
- WriteTimeStream.cs
- HtmlInputReset.cs
- DataTableExtensions.cs
- PageWrapper.cs
- WorkerRequest.cs
- ProtectedConfiguration.cs
- ValidatedMobileControlConverter.cs
- OpenFileDialog.cs
- SpotLight.cs
- EntityContainerAssociationSetEnd.cs
- BeginEvent.cs
- DataFieldConverter.cs
- OdbcError.cs
- MatchNoneMessageFilter.cs
- Link.cs
- CompilerCollection.cs
- DataGridSortCommandEventArgs.cs
- ApplicationContext.cs
- WebPartDisplayModeCollection.cs
- Bold.cs
- RepeaterItemEventArgs.cs
- Nullable.cs
- PerformanceCountersElement.cs
- GiveFeedbackEventArgs.cs
- FileChangesMonitor.cs
- Graph.cs
- SR.cs
- ItemType.cs
- AttachedPropertiesService.cs
- DependencyStoreSurrogate.cs
- DataSetUtil.cs
- Comparer.cs
- smtpconnection.cs
- DeleteIndexBinder.cs
- EpmAttributeNameBuilder.cs
- CommandManager.cs
- KeySplineConverter.cs
- EntityDataSourceReferenceGroup.cs
- Rotation3DAnimation.cs
- PolicyStatement.cs
- RemoteWebConfigurationHostServer.cs
- ArgumentDesigner.xaml.cs
- IgnoreFlushAndCloseStream.cs
- XComponentModel.cs
- ToolStripItemClickedEventArgs.cs
- HttpStreamXmlDictionaryReader.cs
- OdbcHandle.cs
- GuidConverter.cs
- Font.cs
- FixedDocumentPaginator.cs
- FileClassifier.cs
- LabelLiteral.cs
- PassportAuthenticationEventArgs.cs
- XmlSchemaExporter.cs
- HttpCachePolicy.cs
- Section.cs
- ClosureBinding.cs
- ButtonDesigner.cs
- WebConfigurationFileMap.cs
- XamlStream.cs
- TextElementEnumerator.cs
- TaskbarItemInfo.cs
- SHA512Cng.cs
- HtmlDocument.cs
- DefinitionUpdate.cs
- ButtonChrome.cs
- InputScopeAttribute.cs
- HttpModuleCollection.cs
- AdornerDecorator.cs
- ManifestResourceInfo.cs
- Enumerable.cs
- Context.cs
- SecurityException.cs
- DelayedRegex.cs
- ChangeConflicts.cs
- NativeBuffer.cs
- DbReferenceCollection.cs
- ValidateNames.cs
- WebPartConnectionCollection.cs
- SrgsOneOf.cs
- CustomAttribute.cs
- DataGridViewColumnStateChangedEventArgs.cs
- PartialTrustVisibleAssembliesSection.cs
- LockCookie.cs
- ResourceDescriptionAttribute.cs
- SystemNetHelpers.cs
- BooleanExpr.cs
- XmlUrlResolver.cs
- ScriptDescriptor.cs
- TextFormatterContext.cs
- FontStyles.cs
- SharedUtils.cs
- ComponentCollection.cs
- SqlDelegatedTransaction.cs