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
- OletxCommittableTransaction.cs
- AttachedPropertyBrowsableAttribute.cs
- MailAddress.cs
- WebPartConnectionsEventArgs.cs
- ValueUtilsSmi.cs
- SmtpNtlmAuthenticationModule.cs
- FastPropertyAccessor.cs
- IdnElement.cs
- DataGridTemplateColumn.cs
- User.cs
- Comparer.cs
- HyperLinkColumn.cs
- CompareInfo.cs
- BezierSegment.cs
- Configuration.cs
- HMACRIPEMD160.cs
- ProfilePropertySettings.cs
- MtomMessageEncoder.cs
- XmlArrayItemAttributes.cs
- DataRow.cs
- MaskedTextBoxTextEditorDropDown.cs
- LocationReferenceValue.cs
- RepeaterCommandEventArgs.cs
- Deserializer.cs
- XhtmlBasicListAdapter.cs
- Gdiplus.cs
- Delay.cs
- PointUtil.cs
- LoginUtil.cs
- VariableQuery.cs
- SafeThreadHandle.cs
- SqlDataSourceFilteringEventArgs.cs
- SqlOuterApplyReducer.cs
- AsymmetricKeyExchangeFormatter.cs
- EntityChangedParams.cs
- CodeTypeDeclarationCollection.cs
- GorillaCodec.cs
- XamlClipboardData.cs
- SecureStringHasher.cs
- SharedStatics.cs
- Int32KeyFrameCollection.cs
- LicenseProviderAttribute.cs
- ToolStripDropDownItem.cs
- SettingsPropertyWrongTypeException.cs
- FtpWebRequest.cs
- DoubleLinkListEnumerator.cs
- WinEventWrap.cs
- TextSelectionHelper.cs
- TextSerializer.cs
- CompileXomlTask.cs
- RegionData.cs
- XmlSerializerVersionAttribute.cs
- OlePropertyStructs.cs
- XmlCharacterData.cs
- ColorTransformHelper.cs
- BindingValueChangedEventArgs.cs
- PeerReferralPolicy.cs
- Thumb.cs
- WorkflowRuntimeService.cs
- TextTreeInsertElementUndoUnit.cs
- ChildTable.cs
- SessionSwitchEventArgs.cs
- RouteParametersHelper.cs
- WorkflowTraceTransfer.cs
- CompilerError.cs
- DrawListViewItemEventArgs.cs
- HostVisual.cs
- DataIdProcessor.cs
- SelectionWordBreaker.cs
- XmlSchemaDocumentation.cs
- SafeMarshalContext.cs
- ZoomPercentageConverter.cs
- EventMemberCodeDomSerializer.cs
- SelectedGridItemChangedEvent.cs
- DomainConstraint.cs
- SqlDataSource.cs
- CacheAxisQuery.cs
- Stylus.cs
- ApplicationFileCodeDomTreeGenerator.cs
- Parsers.cs
- BufferBuilder.cs
- CodeIdentifier.cs
- EventSourceCreationData.cs
- _SSPISessionCache.cs
- BrowserCapabilitiesCompiler.cs
- SchemaManager.cs
- DtdParser.cs
- ErrorStyle.cs
- PropertyValue.cs
- DataGridItemAutomationPeer.cs
- ArgumentsParser.cs
- Certificate.cs
- NameTable.cs
- MsdtcWrapper.cs
- EmptyTextWriter.cs
- ReferenceEqualityComparer.cs
- XsltContext.cs
- SectionVisual.cs
- PeerCustomResolverElement.cs
- ConfigsHelper.cs