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
- HttpModule.cs
- AbstractDataSvcMapFileLoader.cs
- CodeCompileUnit.cs
- LocalizationComments.cs
- DataRelationCollection.cs
- AbstractSvcMapFileLoader.cs
- EncryptRequest.cs
- SuppressIldasmAttribute.cs
- TraceSwitch.cs
- IsolatedStorageFileStream.cs
- ReceiveActivityDesignerTheme.cs
- LayoutDump.cs
- TreeIterators.cs
- ReferenceAssemblyAttribute.cs
- CustomAttributeBuilder.cs
- MetafileEditor.cs
- GeometryModel3D.cs
- AssemblyBuilderData.cs
- RequestCacheManager.cs
- EndCreateSecurityTokenRequest.cs
- HtmlInputSubmit.cs
- Pair.cs
- ScriptComponentDescriptor.cs
- DateBoldEvent.cs
- Lasso.cs
- ServiceBehaviorAttribute.cs
- BinaryReader.cs
- CollectionView.cs
- X509Extension.cs
- CrossContextChannel.cs
- IERequestCache.cs
- Encoder.cs
- DataGridViewBindingCompleteEventArgs.cs
- DataQuery.cs
- IgnoreSection.cs
- DeclarativeCatalogPart.cs
- PreviewPageInfo.cs
- SchemaType.cs
- OrderedDictionary.cs
- WizardPanel.cs
- IndicFontClient.cs
- CfgParser.cs
- HwndSourceParameters.cs
- X509ClientCertificateAuthentication.cs
- SystemDiagnosticsSection.cs
- IItemProperties.cs
- EntityProviderServices.cs
- OleDbCommand.cs
- BitmapEffectInput.cs
- ControlBindingsConverter.cs
- OleDbSchemaGuid.cs
- CompositeDuplexBindingElement.cs
- MemoryFailPoint.cs
- TypeReference.cs
- FillBehavior.cs
- SmiSettersStream.cs
- HotSpotCollection.cs
- ArraySubsetEnumerator.cs
- InProcStateClientManager.cs
- TypeContext.cs
- TargetInvocationException.cs
- ObjectComplexPropertyMapping.cs
- ListViewInsertEventArgs.cs
- ConnectionOrientedTransportChannelFactory.cs
- RunWorkerCompletedEventArgs.cs
- TypeSystem.cs
- ServicePointManager.cs
- ExcCanonicalXml.cs
- HtmlValidationSummaryAdapter.cs
- TraceShell.cs
- QueryResults.cs
- SQLBytes.cs
- WebPartsPersonalization.cs
- SafeSecurityHelper.cs
- Matrix3D.cs
- XmlWriterTraceListener.cs
- ListView.cs
- SystemIPv4InterfaceProperties.cs
- TabletCollection.cs
- VScrollBar.cs
- ThaiBuddhistCalendar.cs
- HScrollProperties.cs
- DefaultShape.cs
- EventTrigger.cs
- Form.cs
- SqlRowUpdatedEvent.cs
- MediaContextNotificationWindow.cs
- TextElementAutomationPeer.cs
- SafeFileMappingHandle.cs
- WebPartEditorOkVerb.cs
- DateRangeEvent.cs
- DataGridViewCellMouseEventArgs.cs
- ChildrenQuery.cs
- TaskFileService.cs
- SByteConverter.cs
- ZipIOFileItemStream.cs
- SubMenuStyleCollectionEditor.cs
- NotCondition.cs
- ContextInformation.cs
- XslAstAnalyzer.cs