英語で読む

次の方法で共有


ViewTechnology 列挙型

定義

デザイナー ホストがサポートする一連の技術の識別子を定義します。

C#
public enum ViewTechnology
C#
[System.Runtime.InteropServices.ComVisible(true)]
public enum ViewTechnology
継承
ViewTechnology
属性

フィールド

名前 説明
Default 2

既定のビュー技術サポートを指定します。

ルート デザイナーから任意の種類のオブジェクトが返される可能性がありますが、そのオブジェクトはホストのテクノロジに対するアダプターと互換性を持つ必要があります。 Visual Studio などのホスティング環境には、新しいビュー テクノロジ アダプターをプラグインする方法が用意されています。 Windows フォーム デザイナー用の既定のビュー オブジェクトは、Control インスタンスです。

Passthrough 0

ビュー オブジェクトを開発環境に直接渡すモードを表します。

ビュー オブジェクトでは、開発環境で求められるインターフェイスを実装する必要があります。 Visual Studio 開発環境でサポートされるビュー・オブジェクトは、ActiveX コントロール、アクティブ ドキュメント、または Visual Studio VSI (Visual Studio Integration) プログラムを介して使用可能な IVsWindowPane インターフェイスを実装するオブジェクトのいずれかです。 Visual Studio 開発環境では、このビューテクノロジに対するサポートが提供されています。 このビュー テクノロジのサポートは、必ずしもすべての開発環境で利用できるわけではありません。

WindowsForms 1

Windows フォーム コントロール オブジェクトがルート デザイナーにおける表示を提供するモードを表します。 デザイナー ホストは、開発環境のドキュメントウィンドウに Windows フォーム コントロールを埋め込みます。

次の例では、デザイナーで を使用 ViewTechnology.Default する方法を示します。 この例は、 インターフェイス用に提供される大きな例の GetView 一部です。

C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace SampleRootDesigner
{	
    // This sample demonstrates how to provide the root designer view, or
    // design mode background view, by overriding IRootDesigner.GetView().

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

    // The following attribute associates the SampleRootDesigner designer 
    // with the SampleComponent component.
    [Designer(typeof(SampleRootDesigner), typeof(IRootDesigner))]
    public class RootDesignedComponent : Component
    {
        public RootDesignedComponent()
        {
        }
    }

    public class SampleRootDesigner : ComponentDesigner, IRootDesigner
    {
        // 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().
        private 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. 
        object IRootDesigner.GetView(ViewTechnology technology) 
        {
            if (technology != ViewTechnology.Default)
            {
                throw new ArgumentException("Not a supported view technology", "technology");
            }
            if (m_view == null)
            {
                   // 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 = new RootDesignerView(this);
            }
            return m_view;
        }

        // IRootDesigner.SupportedTechnologies is a required override for an
        // IRootDesigner. Default is the view technology used by this designer.  
        ViewTechnology[] IRootDesigner.SupportedTechnologies 
        {
            get
            {
                return new ViewTechnology[] {ViewTechnology.Default};
            }
        }

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

            public RootDesignerView(SampleRootDesigner designer)
            {
                m_designer = designer;
                BackColor = Color.Blue;
                Font = new Font(Font.FontFamily.Name, 24.0f);
            }

            protected override void OnPaint(PaintEventArgs pe)
            {
                base.OnPaint(pe);

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

次の例では、デザイナーで 'ViewTechnology> 列挙体を使用する方法を示します。 この例は、 クラスに対して提供される大きな例の LocalizationExtenderProvider 一部です。

C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

// This example demonstrates adding localization support to a component hierarchy from a 
// custom IRootDesigner using the LocalizationExtenderProvider class.
namespace LocalizationExtenderProviderExample
{	
    // RootViewDesignerComponent is a component associated with the SampleRootDesigner
    // IRootDesigner that provides LocalizationExtenderProvider localization support.
    // This derived class is included at the top of this example to enable 
    // easy launching of designer view without having to put the class in its own file.
    public class RootViewDesignerComponent : RootDesignedComponent
    {  
        public RootViewDesignerComponent()
        {            
        }
    }

    // The following attribute associates the RootDesignedComponent with the RootDesignedComponent component.
    [Designer(typeof(SampleRootDesigner), typeof(IRootDesigner))]
    public class RootDesignedComponent : Component
    {
        public RootDesignedComponent()
        {
        }    
    }

    // Example IRootDesigner implementation demonstrates LocalizationExtenderProvider support.
    internal class SampleRootDesigner : IRootDesigner
    {
        // RootDesignerView Control provides a full region designer view for this root designer's associated component.
        private RootDesignerView m_view;			
        // Stores reference to the LocalizationExtenderProvider this designer adds, in order to remove it on Dispose.
        private LocalizationExtenderProvider extender;        
        // Internally stores the IDesigner's component reference
        private IComponent component;                
        
        // Adds a LocalizationExtenderProvider for the component this designer is initialized to support.
        public void Initialize(System.ComponentModel.IComponent component)
        {
           this.component = component;
            
            // If no extender from this designer is active...
            if( extender == null )
            {
                // Adds a LocalizationExtenderProvider that provides localization support properties to the specified component.
                extender = new LocalizationExtenderProvider(this.component.Site, this.component);
            }
        }

        // Provides a RootDesignerView object that supports ViewTechnology.WindowsForms.
        object IRootDesigner.GetView(ViewTechnology technology) 
        {
            if (technology != ViewTechnology.WindowsForms)
            {
                throw new ArgumentException("Not a supported view technology", "technology");
            }
            if (m_view == null )
            {
                // Create the view control. In this example, a Control of type RootDesignerView is used.
                // A WindowsForms ViewTechnology view provider requires a class that inherits from Control.
                m_view = new RootDesignerView(this, this.Component);
            }
            return m_view;
        }

        // This designer supports the WindowsForms view technology.
        ViewTechnology[] IRootDesigner.SupportedTechnologies 
        {
            get
            {
                return new ViewTechnology[] {ViewTechnology.WindowsForms};
            }
        }
        
        // If a LocalizationExtenderProvider has been added, removes the extender provider.
        protected void Dispose(bool disposing)
        {            
            // If an extender has been added, remove it
            if( extender != null  )  
            {
                // Disposes of the extender provider.  The extender 
                // provider removes itself from the extender provider
                // service when it is disposed.
                extender.Dispose();
                extender = null;                
            }            
        }

        // Empty IDesigner interface property and method implementations
        public System.ComponentModel.Design.DesignerVerbCollection Verbs
        {
            get
            {
                return null;
            }
        }

        public System.ComponentModel.IComponent Component
        {
            get
            {
                return this.component;
            }
        }

        public void DoDefaultAction()
        {            
        }

        public void Dispose()
        {        
        }
        
        // RootDesignerView is a simple control that will be displayed in the designer window.
        private class RootDesignerView : Control
        {
            private SampleRootDesigner m_designer;   
            private IComponent comp;
            
            public RootDesignerView(SampleRootDesigner designer, IComponent component)
            {
                m_designer = designer;                        
                this.comp = component;      
                BackColor = Color.Blue;
                Font = new Font(FontFamily.GenericMonospace, 12);
            }

            // Displays the name of the component and the name of the assembly of the component 
            // that this root designer is providing support for.
            protected override void OnPaint(PaintEventArgs pe)
            {
                base.OnPaint(pe);

                if( m_designer != null && comp != null )
                {
                    // Draws the name of the component in large letters.
                    pe.Graphics.DrawString("Root Designer View", Font, Brushes.Yellow, 8, 4);                    
                    pe.Graphics.DrawString("Design Name  : "+comp.Site.Name, new Font("Arial", 10), Brushes.Yellow, 8, 28);                    
                    pe.Graphics.DrawString("Assembly    : "+comp.GetType().AssemblyQualifiedName, new Font("Arial", 10), Brushes.Yellow, new Rectangle(new Point(8, 44), new Size(ClientRectangle.Width-8, ClientRectangle.Height-44)));                   

                    // Uses the site of the component to acquire an ISelectionService and sets the property grid focus to the component.
                    ISelectionService selectionService = (ISelectionService)comp.Site.GetService(typeof(ISelectionService));
                    if( selectionService != null )                
                        selectionService.SetSelectedComponents( new IComponent[] { m_designer.component } );             
                }
            }
        }
    }
}

注釈

ビュー アダプター モデルは、機能を置き換えて機能に ViewTechnology 追加します。ただし、 ViewTechnology 下位互換性と将来の使用の両方を選択した場合、この機能は保持されます。

ViewTechnology は、デザイナーでホストされるドキュメントの表示を制御するために使用するモードを示す識別子を定義します。

この値は、デザイナー ホスティング Default 環境でのみ使用する必要があります。 以前のバージョンの.NET Frameworkでは、列挙型はViewTechnologyルート デザイナーでサポートされている UI モデルの種類を指定しました。 このモデルは拡張可能ではないので、代わりに ビュー アダプター モデルを使用する必要があります。 ビュー アダプターは、ある型のオブジェクトを別の型に適合させる型です。

たとえば、HTML デザイナーがツリーを DemoDOM ビューとして返す場合があります。 HTML デザイナーは、 のビュー テクノロジ Defaultを返します。 Windows フォーム ホスティング環境では、1 つ以上のビュー アダプター クラスを使用できます。 このようなクラスの 1 つで を DemoDOM Windows フォーム コントロールに変換できる場合、ホスティング アプリケーションはこの種類のデザイナーをサポートできます。 デザイナー GetView の メソッドから返されたデータ型をアダプターで処理できない場合、デザイナーの読み込みが失敗し、ユーザーにエラーが表示されます。

Visual Studio には、ビュー アダプターを提供するための拡張可能なスキームがあるため、任意の UI テクノロジに適応できます。 サードパーティのテクノロジ プロバイダーは、適切なビュー アダプターを提供することもできます。オブジェクト モデルはすぐに使用できます。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1