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
- WmfPlaceableFileHeader.cs
- DesignObjectWrapper.cs
- RegexEditorDialog.cs
- BasicExpressionVisitor.cs
- XamlToRtfWriter.cs
- IisTraceWebEventProvider.cs
- ExtensionDataReader.cs
- FileDialog_Vista.cs
- XPathNavigatorReader.cs
- NumericPagerField.cs
- RootBrowserWindow.cs
- InstalledVoice.cs
- TextElement.cs
- OrderPreservingMergeHelper.cs
- BrushMappingModeValidation.cs
- AddToCollection.cs
- IApplicationTrustManager.cs
- ExpressionPrefixAttribute.cs
- AuthenticationModuleElement.cs
- Base64Encoding.cs
- EventManager.cs
- DbgUtil.cs
- MachineKeySection.cs
- ServiceReference.cs
- LineUtil.cs
- ObjectHelper.cs
- SoapCommonClasses.cs
- ExpressionVisitorHelpers.cs
- RawMouseInputReport.cs
- WindowsGraphics.cs
- Rotation3D.cs
- BamlMapTable.cs
- UnsafeNativeMethods.cs
- SystemColors.cs
- DefaultSection.cs
- DataReaderContainer.cs
- TemplateBaseAction.cs
- GridViewAutomationPeer.cs
- DataServiceQueryOfT.cs
- HttpHandlerActionCollection.cs
- UInt64.cs
- DigestComparer.cs
- Message.cs
- EdgeModeValidation.cs
- SamlEvidence.cs
- unsafeIndexingFilterStream.cs
- KnownColorTable.cs
- MessageBuilder.cs
- GeneratedCodeAttribute.cs
- ThicknessAnimationUsingKeyFrames.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- Aggregates.cs
- BitStream.cs
- SqlDataSourceRefreshSchemaForm.cs
- WebExceptionStatus.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- RealizationDrawingContextWalker.cs
- Rectangle.cs
- SchemaElementDecl.cs
- Operand.cs
- ListViewCancelEventArgs.cs
- CredentialCache.cs
- SrgsElement.cs
- WindowsClientElement.cs
- BlurBitmapEffect.cs
- UntypedNullExpression.cs
- BitStream.cs
- MediaScriptCommandRoutedEventArgs.cs
- KnownIds.cs
- FlowPanelDesigner.cs
- MatrixAnimationUsingKeyFrames.cs
- Constant.cs
- JapaneseCalendar.cs
- DataGridViewButtonCell.cs
- InputElement.cs
- WasAdminWrapper.cs
- PersonalizableAttribute.cs
- SafeHandle.cs
- CacheRequest.cs
- BitmapEffect.cs
- MD5CryptoServiceProvider.cs
- LogicalExpr.cs
- XmlNode.cs
- TreeNodeConverter.cs
- StreamInfo.cs
- ResourceContainerWrapper.cs
- ConnectionProviderAttribute.cs
- LazyTextWriterCreator.cs
- ChtmlImageAdapter.cs
- ResXResourceWriter.cs
- DelegateTypeInfo.cs
- LoginName.cs
- RSAPKCS1SignatureFormatter.cs
- NativeMethods.cs
- Int32CollectionConverter.cs
- QilPatternVisitor.cs
- XmlAnyElementAttribute.cs
- SerializableAttribute.cs
- ThreadSafeMessageFilterTable.cs
- ResourceLoader.cs