单击其中一个菜单项 c# 时禁用其他菜单项
本文关键字:菜单项 其他 一个 单击 | 更新日期: 2023-09-27 18:34:22
我在 WPF 客户端 C# 应用程序中有一个简单的菜单,用户一次只能选择一个项目。如果选择了其中一个项目,则应禁用其他项目,直到操作完成。
例如,我有以下菜单
<MenuItem Header="Help">
<Separator></Separator>
<MenuItem Header="User Manual.." Click="UsageDocMenuItem_Click" />
<Separator></Separator>
<MenuItem Header="Login" Click="LoginItem_Click"/>
<Separator></Separator>
<MenuItem Header="About" Click="AboutMenuItem_Click"/>
<Separator></Separator>
</MenuItem>`
如果用户单击"登录",则应禁用"用户手册"和"关于",直到"登录"操作完成。
可以使用哪种 C# 设计或代码方法来实现这一点?
这意味着有菜单项,当用户单击其中一个时,例如: 登录然后,直到操作完成,应启用登录并禁用其他菜单项。
您需要创建一个按钮单击事件,并且您需要在其中编写代码以查找其他菜单项并禁用它们。
Button_click Event(...)
{
//...disable other menu items
}
假设您使用的是"WPF",则可以使用命令和包含这些命令的 ViewModel 来确定是否启用了该命令。这样,您的ViewModel也知道您所处的"模式"。
我找到了解决方案。我不确定我们是否可以使用所选菜单项的 ID,因为我想一次禁用整个菜单。我可以这样:
<MenuItem Header="Help" Name="help">
<Separator></Separator>
<MenuItem Header="User Manual.." Click="UsageDocMenuItem_Click" />
<Separator></Separator>
<MenuItem Header="Login" Click="LoginItem_Click"/>
<Separator></Separator>
<MenuItem Header="About" Click="AboutMenuItem_Click"/>
<Separator></Separator>
</MenuItem>`
void UsageDocMenuItem_Click()
{
help.IsEnabled = false;
//Do stuff
help.IsEnabled = true;
}
通过为菜单项命名,我可以在代码中的任何位置访问它。
你的问题不是很详细。如果你所需要的只是基本的逻辑/概念,那么也许你需要的只是这样的方法?
public void DisableAllButOneMenuItem(int idOfSelectedMenuItem)
{
// Code that disables all itmes,
// then code that enables a single item again.
}