Behavior Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Behavior Представляет объекты, управляемые с помощью объекта BehaviorService.
public ref class Behavior abstract
public abstract class Behavior
type Behavior = class
Public MustInherit Class Behavior
- Наследование
-
Behavior
Примеры
В следующем примере кода показано, как создать собственный класс на Behavior основе класса, который отвечает на щелчки пользователей. Этот пример кода является частью более крупного примера, предоставленного для BehaviorService класса.
// By providing our own behavior we can do something
// interesting when the user clicks or manipulates our glyph.
public ref class DemoBehavior : public Behavior
{
public:
bool OnMouseUp(Glyph^ g, MouseButtons^ button)
{
MessageBox::Show("Hey, you clicked the mouse here");
// indicating we processed this event.
return true;
}
};
public ref class DemoGlyph : public Glyph
{
Control^ control;
BehaviorService^ behavior;
public:
DemoGlyph(BehaviorService^ behavior, Control^ control):
Glyph(gcnew BehaviorServiceSample::DemoBehavior)
{
this->behavior = behavior;
this->control = control;
}
public:
virtual property Rectangle Bounds
{
Rectangle get() override
{
// 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 = behavior->ControlToAdornerWindow(control);
Size size = control->Size;
Point center = Point(edge.X + (size.Width / 2),
edge.Y + (size.Height / 2));
Rectangle bounds = Rectangle(center.X - 5,
center.Y - 5, 10, 10);
return bounds;
}
}
public:
virtual Cursor^ GetHitTest(Point p) override
{
// 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 nullptr;
}
public:
virtual void Paint(PaintEventArgs^ pe) override
{
// Draw our glyph. Our's is simple: a blue ellipse.
pe->Graphics->FillEllipse(Brushes::Blue, Bounds);
}
};
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.
}
}
}
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
Комментарии
Этот класс можно расширить для разработки любого типа поведения пользовательского интерфейса, включая выделение, перетаскивание и изменение размера поведения.
Дополнительные сведения см. в разделе "Обзор службы поведения".
Замечание
Тип Behavior должен быть связан с типом Glyph . Поведение, независимое от Глифа, не поддерживается.
Конструкторы
| Имя | Описание |
|---|---|
| Behavior() |
Инициализирует новый экземпляр класса Behavior. |
| Behavior(Boolean, BehaviorService) |
Инициализирует новый экземпляр Behavior класса с заданным BehaviorService. |
Свойства
| Имя | Описание |
|---|---|
| Cursor |
Возвращает курсор, который должен отображаться для этого поведения. |
| DisableAllCommands |
Возвращает значение, указывающее, следует ли MenuCommand отключать объекты. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| FindCommand(CommandID) |
Перехватывает команды. |
| GetHashCode() |
Служит в качестве хэш-функции по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| OnDragDrop(Glyph, DragEventArgs) |
Разрешает настраиваемое поведение перетаскивания. |
| OnDragEnter(Glyph, DragEventArgs) |
Разрешает пользовательское поведение перетаскивания. |
| OnDragLeave(Glyph, EventArgs) |
Разрешает пользовательское поведение перетаскивания. |
| OnDragOver(Glyph, DragEventArgs) |
Разрешает пользовательское поведение перетаскивания. |
| OnGiveFeedback(Glyph, GiveFeedbackEventArgs) |
Разрешает пользовательское поведение обратной связи с перетаскиванием. |
| OnLoseCapture(Glyph, EventArgs) |
Вызывается окном декоратора при потере захвата мыши. |
| OnMouseDoubleClick(Glyph, MouseButtons, Point) |
Вызывается, когда любое сообщение дважды щелкает окно BehaviorServiceдекоратора. |
| OnMouseDown(Glyph, MouseButtons, Point) |
Вызывается при вводе любого сообщения мыши в окно BehaviorServiceдекоратора. |
| OnMouseEnter(Glyph) |
Вызывается при вводе любого сообщения мыши в окно BehaviorServiceдекоратора. |
| OnMouseHover(Glyph, Point) |
Вызывается, когда любое сообщение мыши наведите указатель мыши на окно BehaviorServiceдекоратора. |
| OnMouseLeave(Glyph) |
Вызывается, когда любое сообщение о выходе мыши вводит окно BehaviorServiceдекоратора. |
| OnMouseMove(Glyph, MouseButtons, Point) |
Вызывается при вводе любого сообщения с перемещением мыши в окно BehaviorServiceдекоратора. |
| OnMouseUp(Glyph, MouseButtons) |
Вызывается при вводе любого сообщения мыши в окно BehaviorServiceдекоратора. |
| OnQueryContinueDrag(Glyph, QueryContinueDragEventArgs) |
Отправляет это событие перетаскивания из окна декоратора в соответствующий Behavior или тестируемый Glyph. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |