Code:
/ FX-1434 / FX-1434 / 1.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
- IteratorDescriptor.cs
- Ticks.cs
- ColumnWidthChangingEvent.cs
- TranslateTransform.cs
- CellRelation.cs
- PhonemeEventArgs.cs
- DataGridViewRowCollection.cs
- WinEventHandler.cs
- TransactionScope.cs
- ServiceOperationParameter.cs
- TextBlockAutomationPeer.cs
- OraclePermissionAttribute.cs
- DeferredSelectedIndexReference.cs
- ConfigurationLocationCollection.cs
- EntityDescriptor.cs
- securestring.cs
- AuthenticationManager.cs
- InlinedAggregationOperator.cs
- DurationConverter.cs
- EntityCommandDefinition.cs
- WindowsSysHeader.cs
- ServiceProviders.cs
- UrlMappingsModule.cs
- Nullable.cs
- AnnouncementEventArgs.cs
- StrokeCollectionDefaultValueFactory.cs
- DataGridViewLinkColumn.cs
- BezierSegment.cs
- SqlBulkCopyColumnMapping.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- MemberDomainMap.cs
- baseaxisquery.cs
- ProxyFragment.cs
- IdentityHolder.cs
- SmtpReplyReaderFactory.cs
- ErrorProvider.cs
- BasicBrowserDialog.cs
- EventWaitHandle.cs
- CodeIterationStatement.cs
- HyperlinkAutomationPeer.cs
- HtmlHead.cs
- ManualResetEvent.cs
- CancelEventArgs.cs
- CollectionTypeElement.cs
- EditCommandColumn.cs
- AuthStoreRoleProvider.cs
- PagesChangedEventArgs.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- XPathChildIterator.cs
- UTF32Encoding.cs
- TableColumnCollectionInternal.cs
- DataGridViewSelectedRowCollection.cs
- InertiaExpansionBehavior.cs
- HttpVersion.cs
- BuildManager.cs
- HtmlControl.cs
- Timer.cs
- BoolExpr.cs
- MonitoringDescriptionAttribute.cs
- RequestQueryParser.cs
- RegistryExceptionHelper.cs
- OdbcPermission.cs
- WebPartManager.cs
- ConditionBrowserDialog.cs
- SaveCardRequest.cs
- Directory.cs
- TrustDriver.cs
- DataGridViewColumnHeaderCell.cs
- ServicePoint.cs
- TextParagraphView.cs
- WebPartManager.cs
- ValidationResult.cs
- OutputCacheProfileCollection.cs
- GeneralTransform3DTo2DTo3D.cs
- HasCopySemanticsAttribute.cs
- GenericIdentity.cs
- VideoDrawing.cs
- ToolStripRendererSwitcher.cs
- FileCodeGroup.cs
- DragEvent.cs
- DeferredElementTreeState.cs
- MergePropertyDescriptor.cs
- EncoderBestFitFallback.cs
- SharedHttpsTransportManager.cs
- BindingMAnagerBase.cs
- ModelServiceImpl.cs
- MethodAccessException.cs
- MemoryMappedFile.cs
- TogglePattern.cs
- VideoDrawing.cs
- DateTimeStorage.cs
- DoubleAnimationClockResource.cs
- DataGridViewMethods.cs
- CompilerCollection.cs
- EmptyStringExpandableObjectConverter.cs
- Speller.cs
- HierarchicalDataTemplate.cs
- HasRunnableWorkflowEvent.cs
- NameValuePermission.cs
- WindowsGraphicsWrapper.cs