2014-04-16 27 views
-4

我有這個按鈕和工作開關指令。問題在於,當我點擊名爲「考拉」的案例時,我只需要其中一個動作就會發生兩個動作。我怎樣才能解決這個問題?執行單個開關盒

private void KinectTileButtonClick(object sender, RoutedEventArgs e) 
{ 
    var button = (KinectTileButton)e.Source; 
    switch (button.Label.ToString()) 
    { 
     case "Koala2": 
      KinectTileButton_Click_1(sender, e); 

      break; 

    } 
    var wineModel = button.Tag as WineModel; 
    var selectionDisplay = new SelectionDisplay(wineModel); 
    this.kinectRegionGrid.Children.Add(selectionDisplay); 

    e.Handled = true; 
} 
+4

爲什麼不直接使用如果陳述?當您僅對一種情況進行測試時,如果有開關/情況說明沒有多大意義。你期望發生什麼?怎麼了? –

+3

同意@SavannaKing,你是什麼意思「2行爲發生」?我不明白你期望發生什麼以及實際發生了什麼。 – BradleyDotNET

+1

發生什麼「2行動」?你的問題沒有多大意義。 –

回答

2

我相信你只是不想下列測試執行操作:

所以你可能只需要添加在您的測試回報。

休息不會幫助你「走出方法」,它只是爲了開關。

private void KinectTileButtonClick(object sender, RoutedEventArgs e) 
{ 
    var button = (KinectTileButton)e.Source; 
    if(button.Label.ToString() == "Koala2") 
    { 
      KinectTileButton_Click_1(sender, e); 
      return;//get out of this method. 
    } 
    var wineModel = button.Tag as WineModel; 
    var selectionDisplay = new SelectionDisplay(wineModel); 
    this.kinectRegionGrid.Children.Add(selectionDisplay); 

    e.Handled = true; 
} 

或使用的if/else

private void KinectTileButtonClick(object sender, RoutedEventArgs e) 
    { 
     var button = (KinectTileButton)e.Source; 
     if(button.Label.ToString() == "Koala2") 
       KinectTileButton_Click_1(sender, e); 
     else 
     { 
      var wineModel = button.Tag as WineModel; 
      var selectionDisplay = new SelectionDisplay(wineModel); 
      this.kinectRegionGrid.Children.Add(selectionDisplay); 
     } 
     e.Handled = true; 
    } 

順便說一下,這將是可能更清潔做的(好吧,我喜歡小方法)

private void KinectTileButtonClick(object sender, RoutedEventArgs e) 
{ 
    var button = (KinectTileButton)e.Source; 
    if(button.Label.ToString() == "Koala2") 
     Method1(<somearguments>); 
    else 
     Method2(button.Tag as WineModel); 

    e.Handled = true;//if it must happen for all label values. 
} 

public void Method1(<some parameters>) { 
    //DoSomething 
} 

public void Method2(WineModel wineModel) { 
    var selectionDisplay = new SelectionDisplay(wineModel); 
    this.kinectRegionGrid.Children.Add(selectionDisplay); 
} 
+0

更好的是,把其他的功能放在其他地方(不要提前退貨) – BradleyDotNET

+0

@LordTakkera當然,想要展示一個「看起來像休息」的例子,但你說得對。 –

+0

非常感謝! – user3522950