2013-10-07 69 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知道你在'模式'。

相關問題