Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / BindingSourceDesigner.cs / 1 / BindingSourceDesigner.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.Design.BindingSourceDesigner..ctor()")] namespace System.Windows.Forms.Design { using System; using System.Design; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Data; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Windows.Forms; using System.Windows.Forms.Design.Behavior; using System.Reflection; ////// /// Designer for the BindingSource class. /// internal class BindingSourceDesigner : ComponentDesigner { private bool bindingUpdatedByUser = false; ////// Flag set by UITypeEditors to notify us when the BindingSource binding has been /// manually changed by the user (ie. DataSource or DataMember value was edited). /// /// In response to this action, we will send a notification to the DataSourceProviderService /// once the corresponding ComponentChanged event comes through (indicating that the new /// binding has actually taken effect). /// /// This notification will cause the DataSourceProviderService to re-examine the data source /// that the BindingSource is now bound to, so it can generate any table adapters or fill /// statements necessary to properly set up that data source. /// /// This serves the scenario of an advanced user configuring a BindingSource manually. In /// normal user scenarios, BindingSources get auto-generated as a result of various drag/drop /// operations, and in those scenarios the above notification is sent automatically. /// /// VSWhidbey#256272 /// public bool BindingUpdatedByUser { set { bindingUpdatedByUser = value; } } ////// Initialize this designer. /// public override void Initialize(IComponent component) { base.Initialize(component); IComponentChangeService componentChangeSvc = (IComponentChangeService) GetService(typeof(IComponentChangeService)); if (componentChangeSvc != null) { componentChangeSvc.ComponentChanged += new ComponentChangedEventHandler(OnComponentChanged); componentChangeSvc.ComponentRemoving+= new ComponentEventHandler(OnComponentRemoving); } } ////// Dispose this designer. /// protected override void Dispose(bool disposing) { if (disposing) { IComponentChangeService componentChangeSvc = (IComponentChangeService) GetService(typeof(IComponentChangeService)); if (componentChangeSvc != null) { componentChangeSvc.ComponentChanged -= new ComponentChangedEventHandler(OnComponentChanged); componentChangeSvc.ComponentRemoving-= new ComponentEventHandler(OnComponentRemoving); } } base.Dispose(disposing); } ////// Spot when a change to the BindingSource's DataSource or DataMember is made by the user, and notify the /// DataSourceProviderService accordingly. See description of BindingUpdatedByUser property for full details. /// private void OnComponentChanged(object sender, ComponentChangedEventArgs e) { if (bindingUpdatedByUser && e.Component == this.Component && e.Member != null && (e.Member.Name == "DataSource" || e.Member.Name == "DataMember")) { bindingUpdatedByUser = false; DataSourceProviderService dspSvc = (DataSourceProviderService) GetService(typeof(DataSourceProviderService)); if (dspSvc != null) { dspSvc.NotifyDataSourceComponentAdded(Component); } } } private void OnComponentRemoving(object sender, ComponentEventArgs e) { BindingSource b = this.Component as BindingSource; if (b != null && b.DataSource == e.Component) { IComponentChangeService ccs = (IComponentChangeService) GetService(typeof(IComponentChangeService)); string previousDataMember = b.DataMember; PropertyDescriptorCollection props = TypeDescriptor.GetProperties(b); PropertyDescriptor dmPD = props != null ? props["DataMember"] : null; if (ccs != null) { if (dmPD != null) { ccs.OnComponentChanging(b, dmPD); } } b.DataSource = null; if (ccs != null) { if (dmPD != null) { ccs.OnComponentChanged(b, dmPD, previousDataMember, ""); } } } } } } // 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
- ObjectStateManagerMetadata.cs
- dataobject.cs
- QuestionEventArgs.cs
- DecoderNLS.cs
- SystemUdpStatistics.cs
- MessageQueueException.cs
- AspNetSynchronizationContext.cs
- XmlSchemaAnnotated.cs
- NamedPermissionSet.cs
- TypedLocationWrapper.cs
- MetadataUtilsSmi.cs
- SqlWorkflowInstanceStore.cs
- DelegatedStream.cs
- CornerRadius.cs
- DrawingContextWalker.cs
- ObjectDataSourceStatusEventArgs.cs
- TitleStyle.cs
- StandardMenuStripVerb.cs
- PersonalizationEntry.cs
- SmtpCommands.cs
- ConfigsHelper.cs
- ControlBuilderAttribute.cs
- WindowsGraphicsWrapper.cs
- SqlParameterCollection.cs
- LinkTarget.cs
- FileRecordSequenceHelper.cs
- ListBase.cs
- DetailsViewUpdateEventArgs.cs
- ServiceModelActivationSectionGroup.cs
- ConfigurationManagerInternal.cs
- WMIInterop.cs
- TextEditorContextMenu.cs
- TableAdapterManagerGenerator.cs
- ExpressionTextBox.xaml.cs
- FastEncoder.cs
- WpfMemberInvoker.cs
- RunInstallerAttribute.cs
- StandardTransformFactory.cs
- SafeReadContext.cs
- RoleGroup.cs
- ClientSideQueueItem.cs
- SqlHelper.cs
- Lasso.cs
- ToolboxItem.cs
- SdlChannelSink.cs
- BindingListCollectionView.cs
- EventDescriptorCollection.cs
- XpsS0ValidatingLoader.cs
- ForeignConstraint.cs
- QueryPageSettingsEventArgs.cs
- ModifierKeysValueSerializer.cs
- counter.cs
- FlowchartDesigner.xaml.cs
- ConsoleTraceListener.cs
- SingleResultAttribute.cs
- Container.cs
- DeclaredTypeValidatorAttribute.cs
- Attributes.cs
- OdbcConnectionHandle.cs
- MultiBinding.cs
- NavigatorOutput.cs
- ToolTipAutomationPeer.cs
- SettingsBase.cs
- IDictionary.cs
- NewArrayExpression.cs
- WCFBuildProvider.cs
- RadioButtonFlatAdapter.cs
- ApplicationId.cs
- Win32.cs
- PropertyPushdownHelper.cs
- ColumnHeader.cs
- StrokeDescriptor.cs
- DetailsViewUpdateEventArgs.cs
- SyndicationLink.cs
- TypeExtension.cs
- InplaceBitmapMetadataWriter.cs
- SystemSounds.cs
- Int64.cs
- PropertyKey.cs
- TextParagraph.cs
- DbUpdateCommandTree.cs
- TemplateEditingService.cs
- PackUriHelper.cs
- ManagementPath.cs
- ObsoleteAttribute.cs
- TraceListener.cs
- XmlSchemaInclude.cs
- InvokeMemberBinder.cs
- WebSysDescriptionAttribute.cs
- ServiceSettingsResponseInfo.cs
- TemplateControl.cs
- ToolStripLabel.cs
- DBDataPermissionAttribute.cs
- GridViewItemAutomationPeer.cs
- MessageLoggingElement.cs
- ProtectedProviderSettings.cs
- HttpRequestCacheValidator.cs
- QuadraticBezierSegment.cs
- ControlCachePolicy.cs
- WriteableBitmap.cs