Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / DataGridViewColumnTypePicker.cs / 1 / DataGridViewColumnTypePicker.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.Design { using System; using System.Design; using System.Windows.Forms; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections; using System.Drawing; using System.Diagnostics; using System.Drawing.Design; [ ToolboxItem(false), DesignTimeVisible(false) ] internal class DataGridViewColumnTypePicker : ContainerControl { ListBox typesListBox; Type selectedType = null; private IWindowsFormsEditorService edSvc; // the current editor service that we need to close the drop down. private static Type dataGridViewColumnType = typeof(System.Windows.Forms.DataGridViewColumn); private const int MinimumHeight = 90; private const int MinimumWidth = 100; public DataGridViewColumnTypePicker() { typesListBox = new ListBox(); this.Size = typesListBox.Size; this.typesListBox.Dock = DockStyle.Fill; this.typesListBox.Sorted = true; this.typesListBox.HorizontalScrollbar = true; this.typesListBox.SelectedIndexChanged += new EventHandler(typesListBox_SelectedIndexChanged); this.Controls.Add(typesListBox); this.BackColor = SystemColors.Control; this.ActiveControl = typesListBox; } public Type SelectedType { get { return this.selectedType; } } private int PreferredWidth { get { int width = 0; Graphics g = this.typesListBox.CreateGraphics(); try { for (int i = 0; i < this.typesListBox.Items.Count; i ++) { ListBoxItem item = (ListBoxItem) this.typesListBox.Items[i]; width = Math.Max(width, System.Drawing.Size.Ceiling(g.MeasureString(item.ToString(), this.typesListBox.Font)).Width); } } finally { g.Dispose(); } return width; } } private void CloseDropDown() { if (edSvc != null) { edSvc.CloseDropDown(); } } /* protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (Visible) { TreeNode selectedNode = treeView.SelectedNode; // ensure the selected node is visible // if (selectedNode != null) { treeView.SelectedNode = null; treeView.SelectedNode = selectedNode; } treeView.AfterExpand += new TreeViewEventHandler(treeView_AfterExpand); } } */ protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) { if ((BoundsSpecified.Width & specified) == BoundsSpecified.Width) { width = Math.Max(width, MinimumWidth); } if ((BoundsSpecified.Height & specified) == BoundsSpecified.Height) { height = Math.Max(height, MinimumHeight); } base.SetBoundsCore(x, y, width, height, specified); } ////// Setup the picker, and fill it with type information /// public void Start(IWindowsFormsEditorService edSvc, ITypeDiscoveryService discoveryService, Type defaultType) { this.edSvc = edSvc; this.typesListBox.Items.Clear(); ICollection columnTypes = DesignerUtils.FilterGenericTypes(discoveryService.GetTypes(dataGridViewColumnType, false /*excludeGlobalTypes*/)); foreach (Type t in columnTypes) { if (t == dataGridViewColumnType) { continue; } if (t.IsAbstract) { continue; } if (!t.IsPublic && !t.IsNestedPublic) { continue; } DataGridViewColumnDesignTimeVisibleAttribute attr = TypeDescriptor.GetAttributes(t)[typeof(DataGridViewColumnDesignTimeVisibleAttribute)] as DataGridViewColumnDesignTimeVisibleAttribute; if (attr != null && !attr.Visible) { continue; } this.typesListBox.Items.Add(new ListBoxItem(t)); } this.typesListBox.SelectedIndex = TypeToSelectedIndex(defaultType); this.selectedType = null; // set our default width. // this.Width = Math.Max(this.Width, this.PreferredWidth + (SystemInformation.VerticalScrollBarWidth * 2)); } private void typesListBox_SelectedIndexChanged(object sender, EventArgs e) { this.selectedType = ((ListBoxItem) this.typesListBox.SelectedItem).ColumnType; this.edSvc.CloseDropDown(); } private int TypeToSelectedIndex(Type type) { for (int i = 0; i < this.typesListBox.Items.Count; i ++) { if (type == ((ListBoxItem) this.typesListBox.Items[i]).ColumnType) { return i; } } Debug.Assert(false, "we should have found a type by now"); return -1; } private class ListBoxItem { Type columnType; public ListBoxItem(Type columnType) { this.columnType = columnType; } public override string ToString() { return this.columnType.Name; } public Type ColumnType { get { return this.columnType; } } } } } // 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
- HttpRuntimeSection.cs
- ScriptReferenceBase.cs
- UIElement.cs
- WindowsSidIdentity.cs
- AddInStore.cs
- LinqDataSourceHelper.cs
- QuaternionRotation3D.cs
- SoapServerMethod.cs
- FixUp.cs
- MsmqIntegrationOutputChannel.cs
- InputScopeConverter.cs
- SoapObjectReader.cs
- BaseCAMarshaler.cs
- CodeIndexerExpression.cs
- ToolZone.cs
- AssemblyBuilderData.cs
- StrokeIntersection.cs
- GridViewEditEventArgs.cs
- AttributeUsageAttribute.cs
- ApplicationFileParser.cs
- DataRecordObjectView.cs
- XmlSchemaExporter.cs
- ChtmlTextWriter.cs
- SerializationStore.cs
- NegatedCellConstant.cs
- DbConnectionPoolGroup.cs
- HotSpotCollection.cs
- TypeConverterHelper.cs
- ListBox.cs
- NativeMethodsOther.cs
- SafeFileHandle.cs
- ParentUndoUnit.cs
- TraceListeners.cs
- RectConverter.cs
- StsCommunicationException.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- HttpBrowserCapabilitiesWrapper.cs
- ToolStripButton.cs
- XmlSchemaObjectCollection.cs
- DoubleLinkListEnumerator.cs
- RegexGroupCollection.cs
- _FixedSizeReader.cs
- LoggedException.cs
- PageCache.cs
- AuthenticationModuleElement.cs
- HintTextConverter.cs
- HtmlSelect.cs
- CannotUnloadAppDomainException.cs
- basecomparevalidator.cs
- AssemblyBuilder.cs
- DetailsViewPagerRow.cs
- WhitespaceRuleLookup.cs
- TextTrailingWordEllipsis.cs
- ManagedFilter.cs
- GifBitmapDecoder.cs
- ExpressionVisitorHelpers.cs
- Validator.cs
- __Filters.cs
- Membership.cs
- FtpRequestCacheValidator.cs
- unsafenativemethodstextservices.cs
- ProfileParameter.cs
- ArgIterator.cs
- CommonRemoteMemoryBlock.cs
- WebPartAddingEventArgs.cs
- DoubleAnimationBase.cs
- XmlArrayItemAttributes.cs
- ColorInterpolationModeValidation.cs
- PolyQuadraticBezierSegment.cs
- ECDsa.cs
- Helper.cs
- TextPointerBase.cs
- PerformanceCounterScope.cs
- CompilerHelpers.cs
- ToolboxCategoryItems.cs
- XmlSchemaException.cs
- DispatchChannelSink.cs
- ServiceControllerDesigner.cs
- ProcessProtocolHandler.cs
- Transform.cs
- SerializationUtility.cs
- WhereQueryOperator.cs
- File.cs
- HtmlGenericControl.cs
- WebEventTraceProvider.cs
- ListBindableAttribute.cs
- DataGridTextBoxColumn.cs
- DbgUtil.cs
- IISUnsafeMethods.cs
- SingleObjectCollection.cs
- CommonXSendMessage.cs
- WpfXamlLoader.cs
- UnauthorizedWebPart.cs
- ListenerBinder.cs
- BitmapEffectrendercontext.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- EntityEntry.cs
- VisualBrush.cs
- OutputCacheProfileCollection.cs
- ClipboardProcessor.cs