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
- ParenthesizePropertyNameAttribute.cs
- DataException.cs
- TypeBuilder.cs
- Root.cs
- TypeUtil.cs
- X509ChainElement.cs
- MemberPath.cs
- SoapMessage.cs
- CalendarAutomationPeer.cs
- validationstate.cs
- CodeAttributeDeclarationCollection.cs
- CalculatedColumn.cs
- GenericIdentity.cs
- XmlIgnoreAttribute.cs
- LeaseManager.cs
- TextDocumentView.cs
- PerformanceCounters.cs
- ProtocolsSection.cs
- HttpFileCollection.cs
- CommandSet.cs
- Tokenizer.cs
- DataViewSettingCollection.cs
- XmlSchemaNotation.cs
- Tokenizer.cs
- Certificate.cs
- UriTemplateVariablePathSegment.cs
- HtmlInputHidden.cs
- SoapInteropTypes.cs
- DocumentPageViewAutomationPeer.cs
- XmlSerializationWriter.cs
- UrlMapping.cs
- PrintPreviewGraphics.cs
- MessageAction.cs
- SocketElement.cs
- RC2.cs
- DataGridColumnReorderingEventArgs.cs
- ImportedPolicyConversionContext.cs
- Stackframe.cs
- WebSysDescriptionAttribute.cs
- VectorCollectionValueSerializer.cs
- VisualBrush.cs
- RegexParser.cs
- TabletDeviceInfo.cs
- ParagraphVisual.cs
- ViewCellSlot.cs
- Help.cs
- ParallelTimeline.cs
- SqlWebEventProvider.cs
- EndEvent.cs
- CompiledRegexRunner.cs
- TimeoutException.cs
- PropertyEmitterBase.cs
- ArrayWithOffset.cs
- IPAddress.cs
- CompoundFileReference.cs
- CreateUserWizardStep.cs
- XMLUtil.cs
- ErrorTableItemStyle.cs
- DataControlField.cs
- SoapProtocolImporter.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- _NTAuthentication.cs
- ErrorActivity.cs
- RangeValidator.cs
- ShaperBuffers.cs
- PreviewPageInfo.cs
- Vector3dCollection.cs
- SqlNode.cs
- RadioButton.cs
- CompilerGeneratedAttribute.cs
- Errors.cs
- AffineTransform3D.cs
- DefaultValueMapping.cs
- DbDataReader.cs
- ILGenerator.cs
- XmlUtil.cs
- ShadowGlyph.cs
- ApplicationHost.cs
- EventDescriptorCollection.cs
- FieldBuilder.cs
- TypeConverterHelper.cs
- DefaultAuthorizationContext.cs
- SqlClientMetaDataCollectionNames.cs
- LongValidatorAttribute.cs
- TextureBrush.cs
- DataBindingCollection.cs
- LogLogRecordHeader.cs
- Gdiplus.cs
- CompoundFileStorageReference.cs
- EncodingInfo.cs
- SimpleTypeResolver.cs
- DataProtectionSecurityStateEncoder.cs
- OutputChannelBinder.cs
- GetPageCompletedEventArgs.cs
- ChannelSinkStacks.cs
- Overlapped.cs
- StrokeNode.cs
- AnnotationAdorner.cs
- OperationCanceledException.cs
- ActivityDefaults.cs