private void SetupDesigner()
        {
            try
            {
                var snapshot = _language.CreateSourceSnapshot(AssociatedFile.GetContentsAsString()) as NetSourceSnapshot;
                _includeBaseType = !string.IsNullOrEmpty(snapshot.Types[0].ValueType);
                _namespace       = snapshot.Namespaces.Length == 0 ? string.Empty : snapshot.Namespaces[0].Name;

                _serviceContainer.AddService(typeof(INameCreationService), new NameCreationService());
                _surface = _codeReader.Deserialize(_surfaceManager, _serviceContainer, AssociatedFile);

                _viewControl      = _surface.View as Control;
                _viewControl.Dock = DockStyle.Fill;
                this.Control      = _viewControl;

                _designerHost = _surface.GetService <IDesignerHost>();

                var selectionService = _surface.GetService <ISelectionService>();
                selectionService.SelectionChanged += selectionService_SelectionChanged;

                var changeService = _designerHost.GetService <IComponentChangeService>();
                changeService.OnComponentChanging(_designerHost.RootComponent, TypeDescriptor.GetProperties(_designerHost.RootComponent)["Controls"]);
                changeService.ComponentChanging += changeService_ComponentChanging;
                changeService.ComponentAdded    += changeService_ComponentsChanged;
                changeService.ComponentRemoved  += changeService_ComponentsChanged;

                _serviceContainer.AddService(typeof(IMenuCommandService), new Services.MenuCommandService(_extensionHost, _designerHost));
                _serviceContainer.AddService(typeof(IEventBindingService), new Services.EventBindingService(_designerHost));
                _toolboxService = new Services.FormsToolBoxService((ParentExtension as FormsDesignerExtension).ToolBoxBuilder);
                _toolboxService.SelectedItemChanged += toolBoxService_SelectedItemChanged;
                _toolboxService.SelectedItemUsed    += toolBoxService_SelectedItemUsed;
                _serviceContainer.AddService(typeof(IToolboxService), _toolboxService);
            }
            catch (BuildException ex)
            {
                _errorControl.SetBuildErrors(ex.Result.Errors);
                this.Control = _errorControl;
            }
            catch (Exception ex)
            {
                _errorControl.SetException(ex);
                this.Control = _errorControl;
            }
        }
 private void changeService_ComponentChanging(object sender, ComponentChangingEventArgs e)
 {
     AssociatedFile.GiveUnsavedData();
     _propertyContainer.SelectedObjects = new object[] { e.Component };
 }
 private void changeService_ComponentsChanged(object sender, ComponentEventArgs e)
 {
     AssociatedFile.GiveUnsavedData();
 }