2013-10-07 110 views
0

我在WPF客户端C#应用程序中有一个简单的菜单,用户应该一次只能选择一个项目。如果选择了其中一个项目,则应在操作完成之前禁用其他项目。当其中一个菜单项被点击时禁用其他菜单项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>` 

如果用户点击登录,用户手册及关于应禁用,直到通过登录trigerred操作完成。

哪些C#设计或代码方法可用于实现此目的?

+0

你将不得不向我们展示你的一些代码,这是不可能的。 – user65439

+0

哪些技术? WInforms/WPF还有什么? –

+0

该技术是WPF – git16

回答

0

我找到了解决方案。我不确定我们是否可以使用所选菜单项的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; 
} 

通过给菜单项的名称,我可以在代码中的任何地方访问它。

0

你的问题不是很详细。如果你需要的是基本的逻辑/概念,那么也许你需要的是这样的方法?:

public void DisableAllButOneMenuItem(int idOfSelectedMenuItem) 
{ 
    // Code that disables all itmes, 
    // then code that enables a single item again. 
} 
+0

我已经添加更多细节到我的问题了。你能告诉我如何获得所选菜单项的ID并在代码中访问其父项,因为我已经为每个菜单项创建了“点击”事件? – git16

1

那么意味着有菜单项,当用户点击例如其中的一个:登录 然后直到动作完成为止。应该启用登录,并禁用其他菜单项。

您需要创建一个按钮点击事件,并且您需要编写代码以查找其他菜单项并禁用它们。

Button_click Event(...) 
{ 
//...disable other menu items 
} 
+0

是的,你正确理解我的问题。我已经为每个按钮单击事件,如上面的代码片段所示。我只需要知道如何访问其他菜单项? – git16

+0

Web应用程序或窗口? –

+0

Windows WPF应用程序 – git16

1

假设您使用的是'WPF',您可以使用命令和包含这些命令的ViewModel来确定命令是否已启用。这样,它也是你的ViewModel知道你在'模式'。

相关问题