我正在尝试想出一种解决方案,创建可以在运行时生成的动态上下文菜单。我实现了一个名为
这个想法是允许被右键点击的控件在给定的上下文菜单中提交自己的命令列表以显示。
虽然我可以让每个控件构建一个上下文菜单,但我更喜欢使用单个上下文菜单并动态生成菜单,以便在运行时更容易进行管理。当控件状态或应用程序状态发生变化时,我希望上下文菜单能够反映出变化。例如,如果我右键单击复选框,则复选框将提交启用或禁用命令到上下文菜单中,取决于复选框的当前选中值。
如果我有某种方式知道哪个控件被“右键单击”,以便为该特定控件打开上下文菜单,我认为我可以很容易地实现这一点。
令人惊讶的是,ContextMenu事件没有提供一个EventArg来指示被右键点击的控件(或任何导致上下文菜单弹出的命令)。
IGuiCommand
的接口,该接口实现了类似于普通命令模式的功能。interface IGuiCommand
{
Execute();
Undo();
bool CanUndo {get;set;}
Redo();
string CommandName {get;set;}
string CommandDescription {get;set;}
}
这个想法是允许被右键点击的控件在给定的上下文菜单中提交自己的命令列表以显示。
虽然我可以让每个控件构建一个上下文菜单,但我更喜欢使用单个上下文菜单并动态生成菜单,以便在运行时更容易进行管理。当控件状态或应用程序状态发生变化时,我希望上下文菜单能够反映出变化。例如,如果我右键单击复选框,则复选框将提交启用或禁用命令到上下文菜单中,取决于复选框的当前选中值。
如果我有某种方式知道哪个控件被“右键单击”,以便为该特定控件打开上下文菜单,我认为我可以很容易地实现这一点。
令人惊讶的是,ContextMenu事件没有提供一个EventArg来指示被右键点击的控件(或任何导致上下文菜单弹出的命令)。