我有一个继承自ContextMenuStrip
的类。我使用OnOpening
事件根据需要启用/禁用菜单项:
protected override void OnOpening(CancelEventArgs e)
{
base.OnOpening(e);
var count = bindingSource.Count;
var item = (T)bindingSource.Current;
removeMenuItem.Enabled = item != null;
removeAllMenuItem.Enabled = count > 0;
}
以上工作适用于标准要求。但是,现在我想要在父表单中覆盖上面的方法。
所以我尝试做以下事情:
myContextStrip.Opening += (s, ea) =>
{
var current = bindingSource.Current as MyItem;
myContextStrip.RemoveMenuItem.Enabled = !current?.IsDeleted ?? true;
myContextStrip.RemoveAllMenuItem.Enabled = bindingSource.Count > 0;
};
实施上述功能并不像预期的那样有效,因为课程“OnOpening'调用上面的方法后仍然会调用该方法。
是否有更好的方法来覆盖父窗体中的OnOpening
事件,并阻止它进一步调用派生的contextmenu类中的代码?