ViewTechnology Enumeration
TOC
Collapse the table of content
Expand the table of content

ViewTechnology Enumeration

 

Defines identifiers for a set of technologies that designer hosts support.

Namespace:   System.ComponentModel.Design
Assembly:  System (in System.dll)

[ComVisibleAttribute(true)]
public enum class ViewTechnology

Member nameDescription
Default

Specifies the default view technology support.

Passthrough

Obsolete.Represents a mode in which the view object is passed directly to the development environment.

WindowsForms

Obsolete.Represents a mode in which a Windows Forms control object provides the display for the root designer.

The view adapter model replaces and adds functionality to the ViewTechnology feature; however, the ViewTechnology feature is retained for both backward compatibility and future use, if you choose. For more information, see ".NET Shape Library: A Sample Designer" in the Windows Forms Knowledge Base at http://windowsforms.net/articles/shapedesigner.aspx.

ViewTechnology defines identifiers that can indicate the mode to use for controlling the display of a designer-hosted document.

You should only use the Default value in your designer hosting environment. In previous versions of the .NET Framework, the ViewTechnology enumeration specified the type of UI model supported by a root designer. Because this model is not extensible, you should instead use a view adapter model. A view adapter is a type that adapts an object of one type to another.

For example, an HTML designer might return a DemoDOM tree as its view. The HTML designer returns a view technology of Default. A Windows Forms hosting environment would have one or more view adapter classes available. If one such class could convert the DemoDOM into a Windows Forms control, the hosting application can support this type of designer. If no adapter can handle the data type returned from the designer’s GetView method, the load of the designer will fail, and the user will be presented with an error.

Visual Studio has an extensible scheme for providing view adapters, so it can adapt to any UI technology. Third-party technology providers can also offer an appropriate view adapter, and their object models are immediately consumable.

For an example that uses view adapters, see ".NET Shape Library: A Sample Designer" in the Windows Forms Knowledge Base at http://windowsforms.net/articles/shapedesigner.aspx.

The following code example demonstrates how to use the ViewTechnology class in a designer. This code example is part of a larger example provided for the IRootDesigner interface.

#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.Design.dll>
#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Diagnostics;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;

namespace SampleRootDesigner
{
   ref class SampleRootDesigner;

   // This sample demonstrates how to provide the root designer view, or
   // design mode background view, by overriding IRootDesigner.GetView().
   // The following attribute associates the SampleRootDesigner designer
   // with the SampleComponent component.

   [Designer(SampleRootDesigner::typeid,IRootDesigner::typeid)]
   public ref class RootDesignedComponent: public Component
   {
   public:
      RootDesignedComponent(){}

   };

   public ref class SampleRootDesigner: public ComponentDesigner, public IRootDesigner
   {
   private:
      ref class RootDesignerView;

      // Member field of custom type RootDesignerView, a control that
      // will be shown in the Forms designer view. This member is
      // cached to reduce processing needed to recreate the
      // view control on each call to GetView().
      RootDesignerView^ m_view;

      // This method returns an instance of the view for this root
      // designer. The "view" is the user interface that is presented
      // in a document window for the user to manipulate.
      virtual Object^ GetView( ViewTechnology technology ) sealed = IRootDesigner::GetView
      {
         if ( technology != ViewTechnology::WindowsForms )
         {
            throw gcnew ArgumentException( "Not a supported view technology","technology" );
         }

         if ( m_view == nullptr )
         {

            // Some type of displayable Form or control is required
            // for a root designer that overrides GetView(). In this
            // example, a Control of type RootDesignerView is used.
            // Any class that inherits from Control will work.
            m_view = gcnew RootDesignerView( this );
         }

         return m_view;
      }


      // IRootDesigner.SupportedTechnologies is a required override for an
      // IRootDesigner. WindowsForms is the view technology used by this designer.
public:
      property array<ViewTechnology>^ SupportedTechnologies 
      {
		virtual array<ViewTechnology>^ get() 
		{
			return gcnew array<ViewTechnology> {ViewTechnology::Default};

		}
      }

      // RootDesignerView is a simple control that will be displayed
      // in the designer window.
      ref class RootDesignerView: public Control
      {
      private:
         SampleRootDesigner^ m_designer;

      public:
         RootDesignerView( SampleRootDesigner^ designer )
         {
            m_designer = designer;
            BackColor = Color::Blue;
            Font = gcnew System::Drawing::Font( Font->FontFamily->Name,24.0f );
         }


      protected:
         virtual void OnPaint( PaintEventArgs^ pe ) override
         {
            Control::OnPaint( pe );

            // Draws the name of the component in large letters.
            pe->Graphics->DrawString( m_designer->Component->Site->Name, Font, Brushes::Yellow, ClientRectangle );
         }

      };


   };


   // This sample component inherits from RootDesignedComponent which
   // uses the SampleRootDesigner.
   public ref class RootViewSampleComponent: public RootDesignedComponent
   {
   public:
      RootViewSampleComponent(){}

   };

}

.NET Framework
Available since 1.1
Return to top
Show:
© 2016 Microsoft