2014-04-16 3 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

하는 이유는 단지를 사용하지 않은이 방법에 의해/다른

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; } 

경우, 할 아마 청소기 것 사용 if 진술? 하나의 경우에만 테스트 할 때 switch/case 문을 사용하는 것이 좋습니다. 너는 무엇을 기대하고 있니? 무슨 일이야? –

+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; 
} 

또는 (물론, 나는 작은 방법을 좋아한다)

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