BehaviorService イベント

名前 | 説明 | |
---|---|---|
![]() | BeginDrag | BehaviorService がドラッグ アンド ドロップ操作を開始すると発生します。 |
![]() | EndDrag | BehaviorService がドラッグ操作を完了すると発生します。 |
![]() | Synchronize | 現在の選択項目を更新する必要がある場合に発生します。 |

BehaviorService クラス
アセンブリ: System.Design (system.design.dll 内)

Public NotInheritable Class BehaviorService Implements IDisposable
public sealed class BehaviorService : IDisposable
public final class BehaviorService implements IDisposable
public final class BehaviorService implements IDisposable

BehaviorService を作成すると、デザイナ フレームの上に透明なウィンドウが追加されます。BehaviorService がこのウィンドウを使用することにより、Glyph オブジェクトと呼ばれるユーザー インターフェイス要素を描画したり、すべてのマウス メッセージを受信したりできます。BehaviorService はこの方法でデザイナの動作を制御できます。
BehaviorService クラスは、Behavior オブジェクトをプッシュできる動作スタックをサポートします。透明なウィンドウを介してメッセージを受け取ると、BehaviorService は、そのメッセージをスタックの先頭にある Behavior に送信できます。これにより、現在プッシュされている Behavior に応じてさまざまなユーザー インターフェイス モードが有効になります。BehaviorService は、選択境界線、サイズ変更ハンドル、スマート タグなど、すべての Glyph オブジェクトの描画に使用されます。また、BehaviorService は、スナップ線の使用、ドラッグ、選択など、デザイン時の多くの動作も制御します。

ユーザーのクリック操作に応答する独自の Behavior に基づいたクラスを作成する方法を次のコード例に示します。
Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Windows.Forms Imports System.Text Imports System.Windows.Forms.Design Imports System.Windows.Forms.Design.Behavior Namespace BehaviorServiceSample Public Class Form1 Inherits System.Windows.Forms.Form Private userControl As UserControl1 Private components As System.ComponentModel.IContainer = Nothing Public Sub New() MyBase.New() InitializeComponent() End Sub Protected Overrides Sub Dispose(ByVal disposing As Boolean) If disposing AndAlso Not (components Is Nothing) Then components.Dispose() End If MyBase.Dispose(disposing) End Sub Private Sub InitializeComponent() Me.userControl = New UserControl1() Me.SuspendLayout() Me.userControl.Location = New System.Drawing.Point(12, 13) Me.userControl.Name = "userControl" Me.userControl.Size = New System.Drawing.Size(143, 110) Me.userControl.TabIndex = 0 Me.ClientSize = New System.Drawing.Size(184, 153) Me.Controls.Add(userControl) Me.Name = "Form1" Me.Text = "Form1" Me.ResumeLayout(False) End Sub <STAThread()> _ Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class <Designer(GetType(MyDesigner))> _ Public Class UserControl1 Inherits UserControl Private components As System.ComponentModel.IContainer = Nothing Public Sub New() InitializeComponent() End Sub Protected Overrides Sub Dispose(ByVal disposing As Boolean) If disposing AndAlso Not (components Is Nothing) Then components.Dispose() End If MyBase.Dispose(disposing) End Sub Private Sub InitializeComponent() Me.Name = "UserControl1" Me.Size = New System.Drawing.Size(170, 156) End Sub 'InitializeComponent End Class Class MyDesigner Inherits ControlDesigner Private myAdorner As Adorner Protected Overrides Sub Dispose(ByVal disposing As Boolean) If disposing AndAlso Not (myAdorner Is Nothing) Then Dim b As System.Windows.Forms.Design.Behavior.BehaviorService _ = BehaviorService If Not (b Is Nothing) Then b.Adorners.Remove(myAdorner) End If End If End Sub Public Overrides Sub Initialize(ByVal component As IComponent) MyBase.Initialize(component) ' Add the custom set of glyphs using the BehaviorService. ' Glyphs live on adornders. myAdorner = New Adorner() BehaviorService.Adorners.Add(myAdorner) myAdorner.Glyphs.Add(New MyGlyph(BehaviorService, Control)) End Sub End Class Class MyGlyph Inherits Glyph Private control As Control Private behaviorSvc As _ System.Windows.Forms.Design.Behavior.BehaviorService Public Sub New(ByVal behaviorSvc As _ System.Windows.Forms.Design.Behavior.BehaviorService, _ ByVal control As Control) MyBase.New(New MyBehavior()) Me.behaviorSvc = behaviorSvc Me.control = control End Sub Public Overrides ReadOnly Property Bounds() As Rectangle Get ' Create a glyph that is 10x10 and sitting ' in the middle of the control. Glyph coordinates ' are in adorner window coordinates, so we must map ' using the behavior service. Dim edge As Point = behaviorSvc.ControlToAdornerWindow(control) Dim size As Size = control.Size Dim center As New Point(edge.X + size.Width / 2, edge.Y + _ size.Height / 2) Dim bounds1 As New Rectangle(center.X - 5, center.Y - 5, 10, 10) Return bounds1 End Get End Property Public Overrides Function GetHitTest(ByVal p As Point) As Cursor ' GetHitTest is called to see if the point is ' within this glyph. This gives us a chance to decide ' what cursor to show. Returning null from here means ' the mouse pointer is not currently inside of the glyph. ' Returning a valid cursor here indicates the pointer is ' inside the glyph,and also enables our Behavior property ' as the active behavior. If Bounds.Contains(p) Then Return Cursors.Hand End If Return Nothing End Function Public Overrides Sub Paint(ByVal pe As PaintEventArgs) ' Draw our glyph. It is simply a blue ellipse. pe.Graphics.FillEllipse(Brushes.Blue, Bounds) End Sub ' By providing our own behavior we can do something interesting ' when the user clicks or manipulates our glyph. Class MyBehavior Inherits System.Windows.Forms.Design.Behavior.Behavior Public Overrides Function OnMouseUp(ByVal g As Glyph, _ ByVal button As MouseButtons) As Boolean MessageBox.Show("Hey, you clicked the mouse here") Return True ' indicating we processed this event. End Function 'OnMouseUp End Class End Class End Namespace
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using System.Text; using System.Windows.Forms.Design; using System.Windows.Forms.Design.Behavior; namespace BehaviorServiceSample { class Form1 : Form { private UserControl1 userControl; public Form1() { InitializeComponent(); } private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.userControl = new BehaviorServiceSample.UserControl1(); this.SuspendLayout(); this.userControl.Location = new System.Drawing.Point(12, 13); this.userControl.Name = "userControl"; this.userControl.Size = new System.Drawing.Size(143, 110); this.userControl.TabIndex = 0; this.ClientSize = new System.Drawing.Size(184, 153); this.Controls.Add(this.userControl); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } } [Designer(typeof(MyDesigner))] public class UserControl1 : UserControl { private System.ComponentModel.IContainer components = null; public UserControl1() { InitializeComponent(); } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.Name = "UserControl1"; this.Size = new System.Drawing.Size(170, 156); } } class MyDesigner : ControlDesigner { private Adorner myAdorner; protected override void Dispose(bool disposing) { if (disposing && myAdorner != null) { BehaviorService b = BehaviorService; if (b != null) { b.Adorners.Remove(myAdorner); } } } public override void Initialize(IComponent component) { base.Initialize(component); // Add the custom set of glyphs using the BehaviorService. // Glyphs live on adornders. myAdorner = new Adorner(); BehaviorService.Adorners.Add(myAdorner); myAdorner.Glyphs.Add(new MyGlyph(BehaviorService, Control)); } } class MyGlyph : Glyph { Control control; BehaviorService behaviorSvc; public MyGlyph(BehaviorService behaviorSvc, Control control) : base(new MyBehavior()) { this.behaviorSvc = behaviorSvc; this.control = control; } public override Rectangle Bounds { get { // Create a glyph that is 10x10 and sitting // in the middle of the control. Glyph coordinates // are in adorner window coordinates, so we must map // using the behavior service. Point edge = behaviorSvc.ControlToAdornerWindow(control); Size size = control.Size; Point center = new Point(edge.X + (size.Width / 2), edge.Y + (size.Height / 2)); Rectangle bounds = new Rectangle( center.X - 5, center.Y - 5, 10, 10); return bounds; } } public override Cursor GetHitTest(Point p) { // GetHitTest is called to see if the point is // within this glyph. This gives us a chance to decide // what cursor to show. Returning null from here means // the mouse pointer is not currently inside of the glyph. // Returning a valid cursor here indicates the pointer is // inside the glyph, and also enables our Behavior property // as the active behavior. if (Bounds.Contains(p)) { return Cursors.Hand; } return null; } public override void Paint(PaintEventArgs pe) { // Draw our glyph. It is simply a blue ellipse. pe.Graphics.FillEllipse(Brushes.Blue, Bounds); } // By providing our own behavior we can do something interesting // when the user clicks or manipulates our glyph. class MyBehavior : Behavior { public override bool OnMouseUp(Glyph g, MouseButtons button) { MessageBox.Show("Hey, you clicked the mouse here"); return true; // indicating we processed this event. } } } }

System.Windows.Forms.Design.Behavior.BehaviorService


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


BehaviorService プロパティ

名前 | 説明 | |
---|---|---|
![]() | Adorners | BehaviorServiceAdornerCollection を取得します。 |
![]() | AdornerWindowGraphics | 装飾ウィンドウの Graphics を取得します。 |
![]() | CurrentBehavior | 動作スタックの先頭にある Behavior を削除せずに取得します。 |

BehaviorService メソッド


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

BehaviorService メンバ
デザイナのユーザー インターフェイスを管理します。このクラスは継承できません。
BehaviorService データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | Adorners | BehaviorServiceAdornerCollection を取得します。 |
![]() | AdornerWindowGraphics | 装飾ウィンドウの Graphics を取得します。 |
![]() | CurrentBehavior | 動作スタックの先頭にある Behavior を削除せずに取得します。 |


名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | BeginDrag | BehaviorService がドラッグ アンド ドロップ操作を開始すると発生します。 |
![]() | EndDrag | BehaviorService がドラッグ操作を完了すると発生します。 |
![]() | Synchronize | 現在の選択項目を更新する必要がある場合に発生します。 |

Weblioに収録されているすべての辞書からBehaviorServiceを検索する場合は、下記のリンクをクリックしてください。

- BehaviorServiceのページへのリンク