2014-12-18 3 views
0
Public Sub ButtonVisibilityOnTab() 
    Select Case ctl.Parent.Name 
     Case "tabGeneral" 
      ctl.btnAdd.Visible = True    
     Case "tabSecond" 
      ctl.btnAdd.Visible = False     
     Case "tabThird" 
      ctl.btnAdd.Visible = False    
     Case Else 
      ctl.btnAdd.Visible = False    
    End Select 
End Sub 

어떻게 위 코드를 최적화/리 팩터 할 수 있습니까?리팩터링 유지 보수

3 개의 탭과 공통된 사용자 정의 컨트롤이있는 앱이 있습니다. 내가 첫 번째 탭을 가지고 추가 버튼에 대한 가시성을 활성화하고 싶습니다.

나중에 사용자 컨트롤을 다시 사용하는 경우 다른 경우를 피할 수 있도록 코드를 최적화 할 수 있습니까?

이렇게하려면 탭 컨트롤 이름과 함께 bool 값을 전달해야합니다. 코드가 기록되면 또는 컨트롤의 배열 방법에 대한 값의 통과 논리 것이다 ..

+0

매우 간단합니다. tabSecond 및 tabThird의 경우를 제거하고 기본값을 Else 섹션에 한 번만 유지하면됩니다. –

+0

Visibility 속성은 switch 문이 필요없는 데이터 바인딩 일 수 있습니다. –

+0

향후에 새 탭에서이 추가 버튼을 사용해야하는 경우를 예상합니까? –

답변

0

이러한 진술이 많으면 설정 클래스를 만들 수 있습니다.

Class Settings 
    Public Property CanAdd As Boolean 
End Class 

이 클래스는 각 탭 내부에 있으며 각 탭은 자체 값을 설정합니다. 그런 다음 버튼 가시성 기능은 현재 탭 설정을 봅니다.

Public Sub ButtonVisibilityOnTab() 
    ctl.btnAdd.Visible = ctl.Parent.Setting.CanAdd 
End Sub 

그런 다음 모든 탭에 설정을 처리하는 인터페이스를 구현할 수 있습니다. 당신의 기능은 다음과 같이 보일 것입니다.

Public Sub ButtonVisibilityOnTab() 
    ctl.btnAdd.Visible = CType(ctl.Parent, ISomeInterface).Setting.CanAdd 
End Sub 
+1

이것은 앞으로 나아갈 것입니다. 나는 그 생각을 좋아한다. 답변 감사합니다. – JeffJeffery

1

, 그것은

Public Sub ButtonVisibilityOnTab() 
    ctl.btnAdd.Visible = (ctl.Parent.Name.ToLower().Equals("tabgeneral")) 
End Sub 

이상의 일반적으로 단순화 될 수

Public Sub ButtonVisibilityOnTab(CompareTo as String) 
    ctl.btnAdd.Visible = (ctl.Parent.Name.ToLower().Equals(CompareTo.ToLower())) 
End Sub 
+0

동등성 검사에서 '='기호가 누락되었습니다. –

+0

VB.Net에서 double이 같음 ?? – CriketerOnSO

+0

그는 첫 번째로 옳았습니다 :'=='는 VB가 아닌 C# 및 가족입니다. 이 상황에서 .Equals()를 선택하는 것이 좋습니다. 모호성을 피하려면 –

0

이것은 나를 위해 일한 것이고, 매개 변수로 컨트롤 Name을 전달하기 시작했습니다.

Private Sub ButtonVisibilityOnTab(controlName As String, blnShowOrNot As Boolean) 
    If _ctl.Parent.Name = controlName Then 
     _ctl.btnAdd.Visible = blnShowOrNot    
    Else 
     _ctl.btnAdd.Visible = Not (blnShowOrNot)   
    End If 
End Sub