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
- brushes.cs
- GridLength.cs
- Filter.cs
- ContextProperty.cs
- Container.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- Image.cs
- XmlArrayAttribute.cs
- UInt64.cs
- TextRunCacheImp.cs
- ProjectionPath.cs
- DoubleAverageAggregationOperator.cs
- TableCellAutomationPeer.cs
- ScalarOps.cs
- JournalEntryStack.cs
- TreeNodeBinding.cs
- XmlIncludeAttribute.cs
- BindingSource.cs
- NativeRecognizer.cs
- RawKeyboardInputReport.cs
- SerializationFieldInfo.cs
- ConfigsHelper.cs
- smtppermission.cs
- WaitHandle.cs
- CustomError.cs
- TimeoutStream.cs
- relpropertyhelper.cs
- ToolStripEditorManager.cs
- StringFunctions.cs
- ManagementQuery.cs
- compensatingcollection.cs
- oledbconnectionstring.cs
- ScrollBar.cs
- MenuAdapter.cs
- Vector3DCollection.cs
- MemoryMappedFileSecurity.cs
- XmlCodeExporter.cs
- ProcessInfo.cs
- BitmapEffectDrawingContextState.cs
- TextServicesDisplayAttributePropertyRanges.cs
- PolyQuadraticBezierSegment.cs
- DataGridColumn.cs
- BindingExpression.cs
- FixedSchema.cs
- SmtpReplyReaderFactory.cs
- SerialErrors.cs
- OutputWindow.cs
- brushes.cs
- WorkflowServiceBehavior.cs
- Parallel.cs
- EntitySqlQueryState.cs
- ButtonBase.cs
- ClassHandlersStore.cs
- CreateUserErrorEventArgs.cs
- GroupBoxRenderer.cs
- DataTemplateSelector.cs
- SqlCharStream.cs
- DataStreams.cs
- AttributeProviderAttribute.cs
- __ConsoleStream.cs
- ResourceSetExpression.cs
- Bookmark.cs
- WindowsListView.cs
- ErrorLog.cs
- PreloadedPackages.cs
- Permission.cs
- BufferModesCollection.cs
- FacetDescription.cs
- SqlWebEventProvider.cs
- ContainsRowNumberChecker.cs
- Empty.cs
- XslAst.cs
- Timer.cs
- RunInstallerAttribute.cs
- RegexCode.cs
- StringUtil.cs
- VirtualDirectoryMappingCollection.cs
- TypeInitializationException.cs
- DataSourceSelectArguments.cs
- TextMessageEncodingBindingElement.cs
- Point.cs
- SqlProcedureAttribute.cs
- SqlParameterCollection.cs
- AppDomain.cs
- MessageDecoder.cs
- GlyphsSerializer.cs
- BadImageFormatException.cs
- EntityClassGenerator.cs
- IPCCacheManager.cs
- Transactions.cs
- HtmlTextArea.cs
- Parallel.cs
- TypeUtils.cs
- XmlDataCollection.cs
- securitycriticaldataClass.cs
- DataBoundControlAdapter.cs
- ServiceOperationParameter.cs
- TrustLevel.cs
- returneventsaver.cs
- RichTextBoxAutomationPeer.cs