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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ActiveDocumentEvent.cs
- PeoplePickerWrapper.cs
- CaseCqlBlock.cs
- StructuredCompositeActivityDesigner.cs
- ReflectionPermission.cs
- ImageAutomationPeer.cs
- NamedPipeAppDomainProtocolHandler.cs
- LocalizationParserHooks.cs
- ServiceAuthorizationElement.cs
- CoreSwitches.cs
- URLIdentityPermission.cs
- DateTimePicker.cs
- HtmlMeta.cs
- SimpleWorkerRequest.cs
- DelayedRegex.cs
- UnsupportedPolicyOptionsException.cs
- GridViewColumn.cs
- X509Certificate2Collection.cs
- DbProviderSpecificTypePropertyAttribute.cs
- GlobalizationAssembly.cs
- XMLSchema.cs
- ClientSideQueueItem.cs
- WmlFormAdapter.cs
- PageAsyncTask.cs
- EntityDesignerDataSourceView.cs
- SByteConverter.cs
- IItemProperties.cs
- CommentAction.cs
- EditorZone.cs
- GetKeyedHashRequest.cs
- StringUtil.cs
- TraceSection.cs
- DrawingGroupDrawingContext.cs
- DataGridViewCellStyleChangedEventArgs.cs
- FixedSOMLineRanges.cs
- ParamArrayAttribute.cs
- _emptywebproxy.cs
- Border.cs
- EventItfInfo.cs
- TextDecorationUnitValidation.cs
- TargetParameterCountException.cs
- HtmlEmptyTagControlBuilder.cs
- XmlSchemaAll.cs
- ContextConfiguration.cs
- ProgressBarRenderer.cs
- DocumentSignatureManager.cs
- regiisutil.cs
- DataBindingsDialog.cs
- MappingException.cs
- TreeViewImageGenerator.cs
- CancellationTokenSource.cs
- RemoteHelper.cs
- ProcessModule.cs
- AdRotator.cs
- SqlCacheDependencySection.cs
- PageEventArgs.cs
- XamlHostingSectionGroup.cs
- PersonalizationEntry.cs
- BmpBitmapEncoder.cs
- Command.cs
- BindingMAnagerBase.cs
- BitmapDecoder.cs
- ImageListStreamer.cs
- MsmqQueue.cs
- DispatcherFrame.cs
- ProxyRpc.cs
- XmlCharCheckingWriter.cs
- XAMLParseException.cs
- IntSecurity.cs
- WebPartUtil.cs
- PageEventArgs.cs
- NetCodeGroup.cs
- XPathParser.cs
- ReliableSession.cs
- ContentPlaceHolder.cs
- AttributeCollection.cs
- CallbackValidator.cs
- HttpResponse.cs
- Knowncolors.cs
- ContentOnlyMessage.cs
- BinaryNode.cs
- ControlAdapter.cs
- TrailingSpaceComparer.cs
- DocumentSequence.cs
- RtType.cs
- ProviderBase.cs
- DataColumnMappingCollection.cs
- cookiecollection.cs
- WindowInteropHelper.cs
- PropertyValidationContext.cs
- BitmapEffectInput.cs
- ZipIOExtraFieldElement.cs
- WindowsSlider.cs
- GetWinFXPath.cs
- WindowsGraphics2.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- LocationReference.cs
- _CookieModule.cs
- ToolStripDropDownClosingEventArgs.cs
- DefaultSerializationProviderAttribute.cs