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
- QilInvokeLateBound.cs
- AxWrapperGen.cs
- AdjustableArrowCap.cs
- GridViewAutomationPeer.cs
- RevocationPoint.cs
- ActivationArguments.cs
- SelectorAutomationPeer.cs
- InvokeMethodActivityDesigner.cs
- BinaryVersion.cs
- HotSpotCollection.cs
- ListItemConverter.cs
- TableLayoutPanel.cs
- COM2IProvidePropertyBuilderHandler.cs
- ProfileEventArgs.cs
- XPathNodePointer.cs
- NativeCppClassAttribute.cs
- ProfessionalColorTable.cs
- MenuItemCollection.cs
- TextSpanModifier.cs
- StylusOverProperty.cs
- ConfigXmlElement.cs
- IODescriptionAttribute.cs
- TypeInfo.cs
- PackagePartCollection.cs
- ServerValidateEventArgs.cs
- MediaCommands.cs
- CheckBoxDesigner.cs
- TextContainerChangeEventArgs.cs
- Lasso.cs
- XmlEventCache.cs
- ListCollectionView.cs
- JsonClassDataContract.cs
- DataGrid.cs
- FixUpCollection.cs
- Window.cs
- ContentWrapperAttribute.cs
- WebBrowsableAttribute.cs
- LoginUtil.cs
- Site.cs
- Axis.cs
- ModelItemImpl.cs
- DependencyObject.cs
- SerializationStore.cs
- FileDialogCustomPlace.cs
- ConfigurationFileMap.cs
- ThreadExceptionEvent.cs
- SqlBulkCopy.cs
- SharedPerformanceCounter.cs
- ExpressionBindingCollection.cs
- RoutingUtilities.cs
- BrowserCapabilitiesCodeGenerator.cs
- UnsafeNativeMethods.cs
- DataServiceQueryContinuation.cs
- Application.cs
- TimersDescriptionAttribute.cs
- TransportSecurityHelpers.cs
- BitmapFrameEncode.cs
- DbMetaDataColumnNames.cs
- AutoGeneratedFieldProperties.cs
- SchemaObjectWriter.cs
- XmlElement.cs
- DataGridRowHeaderAutomationPeer.cs
- HttpCacheVary.cs
- DataServiceHostFactory.cs
- ProfilePropertyNameValidator.cs
- ScriptRef.cs
- XsdSchemaFileEditor.cs
- ServiceContractDetailViewControl.cs
- XmlChildEnumerator.cs
- PropertyEmitterBase.cs
- TextReader.cs
- EntityDataSourceSelectingEventArgs.cs
- ByeOperationCD1AsyncResult.cs
- WebBrowserNavigatedEventHandler.cs
- ProtocolsConfiguration.cs
- TraceUtils.cs
- UnsafeNativeMethods.cs
- UnmanagedMemoryStreamWrapper.cs
- EventListener.cs
- UpDownBase.cs
- EUCJPEncoding.cs
- WebPartsSection.cs
- SafePEFileHandle.cs
- DockPattern.cs
- CssStyleCollection.cs
- DataRecordObjectView.cs
- DataGridViewRowConverter.cs
- SingleTagSectionHandler.cs
- ColumnWidthChangingEvent.cs
- InkCanvasFeedbackAdorner.cs
- Transform.cs
- CreateUserWizardDesigner.cs
- PrinterSettings.cs
- SchemaImporter.cs
- SspiWrapper.cs
- DrawingAttributesDefaultValueFactory.cs
- CodeIdentifiers.cs
- ModelTreeEnumerator.cs
- XmlAtomicValue.cs
- ContractType.cs