|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace System.Windows.Forms.Design;
/// <summary>
/// The event handler service provides a unified way to handle
/// the various events that our form designer must process. What
/// we want to be able to do is to write code in one place that
/// handles events of a certain type. We also may need to globally
/// change the behavior of these events for modal functions like
/// the tab order UI. Our designer, however, is in many pieces
/// so we must somehow funnel these events to a common place.
/// This service implements an "event stack" that contains the
/// current set of event handlers. There can be different
/// types of handlers on the stack. For example, we may push
/// a keyboard handler and a mouse handler. When you request
/// a handler, we will find the topmost handler on the stack
/// that fits the class you requested. This way the service
/// can be extended to any eventing scheme, and it also allows
/// sections of a handler to be replaced (eg, you can replace
/// mouse handling without effecting menus or the keyboard).
/// </summary>
internal interface IEventHandlerService
{
/// <summary>
/// Gets the control that handles focus changes
/// for this event handler service.
/// </summary>
Control? FocusWindow { get; }
event EventHandler? EventHandlerChanged;
/// <summary>
/// Gets the currently active event handler of the specified type.
/// </summary>
object? GetHandler(Type handlerType);
/// <summary>
/// Pops
/// the given handler off of the stack.
/// </summary>
void PopHandler(object handler);
/// <summary>
/// Pushes a new event handler on the stack.
/// </summary>
void PushHandler(object handler);
}
|