Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / DataGridDesigner.cs / 1 / DataGridDesigner.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms.Design {
using System.Design;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.ComponentModel.Design;
using System.Drawing;
using Microsoft.Win32;
using System.Windows.Forms.ComponentModel;
///
///
/// Provides a base designer for data grids.
///
internal class DataGridDesigner : System.Windows.Forms.Design.ControlDesigner {
///
///
/// Gets the design-time verbs suppoted by the component associated with the
/// designer.
///
protected DesignerVerbCollection designerVerbs;
private IComponentChangeService changeNotificationService = null;
///
///
/// Initializes a new instance of the class.
///
private DataGridDesigner() {
designerVerbs = new DesignerVerbCollection();
designerVerbs.Add(new DesignerVerb(SR.GetString(SR.DataGridAutoFormatString), new EventHandler(this.OnAutoFormat)));
AutoResizeHandles = true;
}
public override void Initialize(IComponent component) {
base.Initialize(component);
IDesignerHost dh = (IDesignerHost) this.GetService(typeof(IDesignerHost));
if (dh != null) {
changeNotificationService = (IComponentChangeService) dh.GetService(typeof(IComponentChangeService));
if (changeNotificationService != null)
changeNotificationService.ComponentRemoved += new ComponentEventHandler(DataSource_ComponentRemoved);
}
}
private void DataSource_ComponentRemoved(object sender, ComponentEventArgs e) {
DataGrid d = (DataGrid) this.Component;
if (e.Component == d.DataSource)
d.DataSource = null;
}
protected override void Dispose(bool disposing) {
if (disposing) {
if (changeNotificationService != null)
changeNotificationService.ComponentRemoved -= new ComponentEventHandler(DataSource_ComponentRemoved);
}
base.Dispose(disposing);
}
///
///
/// Gets the design-time verbs supported by the component associated with the
/// designer.
///
public override DesignerVerbCollection Verbs {
get {
return designerVerbs;
}
}
///
///
/// Raises the AutoFormat event.
///
[
SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes") // See comment inside the method about ignoring errors.
]
private void OnAutoFormat(object sender, EventArgs e) {
object o = Component;
DataGrid dgrid = o as DataGrid;
Debug.Assert(dgrid != null, "DataGrid expected.");
DataGridAutoFormatDialog dialog = new DataGridAutoFormatDialog(dgrid);
if (dialog.ShowDialog() == DialogResult.OK) {
DataRow selectedData = dialog.SelectedData;
IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost));
DesignerTransaction trans = host.CreateTransaction(SR.GetString(SR.DataGridAutoFormatUndoTitle, Component.Site.Name));
try {
if (selectedData != null) {
PropertyDescriptorCollection gridProperties = TypeDescriptor.GetProperties(typeof(DataGrid));
foreach (DataColumn c in selectedData.Table.Columns) {
object value = selectedData[c];
PropertyDescriptor prop = gridProperties[c.ColumnName];
if (prop != null) {
if (Convert.IsDBNull(value) || value.ToString().Length == 0) {
prop.ResetValue(dgrid);
}
else {
try {
TypeConverter converter = prop.Converter;
object convertedValue = converter.ConvertFromString(value.ToString());
prop.SetValue(dgrid, convertedValue);
}
catch {
// Ignore errors... the only one we really care about is Font names.
// The TypeConverter will throw if the font isn't on the user's machine
}
}
}
}
}
}
finally {
trans.Commit();
}
// now invalidate the grid
dgrid.Invalidate();
}
}
}
}
// 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
- HwndAppCommandInputProvider.cs
- WsdlBuildProvider.cs
- FrameworkContentElement.cs
- TableCellCollection.cs
- RuleSettingsCollection.cs
- ResXBuildProvider.cs
- PermissionSet.cs
- DropSource.cs
- WindowsRichEdit.cs
- Exception.cs
- AssemblyNameEqualityComparer.cs
- WSDualHttpSecurity.cs
- PointLightBase.cs
- DataGridViewAddColumnDialog.cs
- DataServices.cs
- AmbientEnvironment.cs
- AutomationProperties.cs
- FileRegion.cs
- TypeBrowserDialog.cs
- reliableinputsessionchannel.cs
- SecurityContext.cs
- EdmScalarPropertyAttribute.cs
- BindingWorker.cs
- MemberBinding.cs
- SecurityProtocol.cs
- ImageMetadata.cs
- ConstraintEnumerator.cs
- UnmanagedMemoryAccessor.cs
- SqlInternalConnectionTds.cs
- Dispatcher.cs
- EmptyQuery.cs
- CriticalFinalizerObject.cs
- Quaternion.cs
- coordinatorscratchpad.cs
- SynchronizedDispatch.cs
- CodeVariableReferenceExpression.cs
- ThemeConfigurationDialog.cs
- PrintDocument.cs
- HighlightComponent.cs
- SmtpReplyReader.cs
- PaperSource.cs
- __TransparentProxy.cs
- safelinkcollection.cs
- StructuralCache.cs
- CompositeControl.cs
- WebServiceTypeData.cs
- relpropertyhelper.cs
- NonVisualControlAttribute.cs
- XPathException.cs
- HitTestResult.cs
- ContentElementCollection.cs
- ExeContext.cs
- ViewStateException.cs
- TextServicesCompartmentContext.cs
- FieldNameLookup.cs
- BooleanSwitch.cs
- XmlRawWriterWrapper.cs
- Timer.cs
- ComboBoxRenderer.cs
- XmlQueryType.cs
- ErrorView.xaml.cs
- InfoCardMetadataExchangeClient.cs
- AddressingVersion.cs
- PageCatalogPart.cs
- NamespaceCollection.cs
- _CookieModule.cs
- TextEditorTyping.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- URLAttribute.cs
- ObjectDataSourceEventArgs.cs
- UriTemplateEquivalenceComparer.cs
- FontStyles.cs
- CheckPair.cs
- XmlSchemaComplexContentExtension.cs
- UnionExpr.cs
- controlskin.cs
- CheckBoxField.cs
- ValidationErrorCollection.cs
- StringValidatorAttribute.cs
- ExternalFile.cs
- DecodeHelper.cs
- OdbcReferenceCollection.cs
- ScriptComponentDescriptor.cs
- TextControl.cs
- XPathDocument.cs
- InputDevice.cs
- Thickness.cs
- PersonalizationDictionary.cs
- TreeNodeCollectionEditorDialog.cs
- BasePattern.cs
- EntityClientCacheKey.cs
- CLSCompliantAttribute.cs
- DataServices.cs
- AssertUtility.cs
- Comparer.cs
- Rules.cs
- HotSpot.cs
- __Filters.cs
- StringArrayConverter.cs
- XmlSchemaComplexContent.cs