gpt4 book ai didi

c# - 禁用控件(例如按钮)上的上下文菜单

转载 作者:行者123 更新时间:2023-12-03 22:19:04 25 4
gpt4 key购买 nike

我正在寻找一种使用ContextMenu启用/禁用按钮的方法。但我的问题是,当我单击启用 MenuItem 禁用该按钮时,ContextMenu 将不再显示。

有没有办法在禁用的控件上保留ContextMenu或其他行为?

ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Enable", new EventHandler(enableButton));

this.button1.ContextMenu = cm;



private void enableButton(object sender, EventArgs e)
{
MenuItem menuItem = sender as MenuItem;
if (menuItem != null)
{
ContextMenu menu = menuItem.GetContextMenu();
Control sourceControl = menu.SourceControl;
sourceControl.Enabled = !sourceControl.Enabled;
}
}

最佳答案

创建自己的禁用功能,将按钮设置为灰色,拦截其事件,这样按钮将显示为禁用,但可以接收 ContextMenu 事件。此行为是“设计使然”。

您可以轻松地将 btn.Font 设计为看起来已禁用。对于事件,一种方法是在“禁用”上取消订阅它们,并在“启用”上 Hook 它们,这里是获取控件事件的示例...

dynamic controltype = btn;
var events = Type.ReflectionOnlyGetType(controltype.AssemblyQualifiedName, false, true).GetEvents();
foreach (var item in events)
{
//EventHandler<T> use a generic Event Handler to Subscribe and Unsubscribe
}

关于c# - 禁用控件(例如按钮)上的上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com