2010-05-20 9 views
1

가끔은 생각하기에 너무 복잡하다고 생각하거나 너무 많이 생각하면 지칠 수도 있습니다.너무 복잡하다고 생각합니까? 이 코드를 어떻게 단순화 할 수 있습니까?

내 Windows Forms 응용 프로그램 용 YouTube에있는 호출기를 복사하려고합니다.

그리고 여기 내가 지금까지 무엇을했는지 있습니다 :

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click, btn1.Click, btn2.Click, btn3.Click, btn4.Click, btn5.Click, btn6.Click, btn7.Click, btnNext.Click 
     If sender.text = "previous" Then 
      SelIndex -= 1 
     ElseIf sender.text = "next" Then 
      SelIndex += 1 
     Else 
      If sender.text > SelIndex Then 
       If sender.name = "btn5" OrElse sender.name = "btn6" OrElse sender.name = "btn7" Then 
        btn1.Text += 1 
        btn2.Text += 1 
        btn3.Text += 1 
        btn4.Text += 1 
        btn5.Text += 1 
        btn6.Text += 1 
        btn7.Text += 1 
        SelIndex = btn4.Text 
       Else 
        SelIndex = sender.text 
       End If 
      ElseIf sender.text < SelIndex Then 
       If sender.name = "btn1" OrElse sender.name = "btn2" OrElse sender.name = "btn3" Then 
        If btn1.Text <> "1" Then 
         btn1.Text -= 1 
         btn2.Text -= 1 
         btn3.Text -= 1 
         btn4.Text -= 1 
         btn5.Text -= 1 
         btn6.Text -= 1 
         btn7.Text -= 1 
         SelIndex = btn4.Text 
        Else 
         SelIndex = sender.text 
        End If 
       End If 
      Else 
       SelIndex = sender.text 
      End If 
     End If 
     Select Case SelIndex 
      Case 1 
       btnPrevious.Visible = False 
      Case Else 
       btnPrevious.Visible = True 
     End Select 
     Label1.Text = SelIndex 
    End Sub 

첫 번째 문제는 내가 모래에 동그라미를 만드는 중이라서 것 같다. 코드를 작성한 방식이 마음에 들지 않아 예상대로 작동하지 않습니다.

질문은 다음과 같습니다. 어떻게 이것을 단순화 할 수 있습니까?

+0

그래, 휴가가 필요합니다. – Raj

+0

우선, 버튼 목록을 반복해야합니다. 또한 VB.Net을 잘 모르지만'btnPrevious.Visible = (SelIndex <> 1)'또는 이와 비슷한 것을 쓸 수 없습니까? –

+0

왜 하나의 하위 버튼에서 모든 버튼 클릭을 처리하고 있습니까? 모든 클릭을 개별적으로 처리하는 것이 더 쉬울 것이라고 생각합니다. –

답변

0

새 페이지를 먼저 결정한 다음 버튼 등에 텍스트를 설정하십시오. 다음과 같이하십시오 :

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click, btn1.Click, btn2.Click, btn3.Click, btn4.Click, btn5.Click, btn6.Click, btn7.Click, btnNext.Click 
    If sender.text = "previous" Then 
    SelIndex -= 1 
    ElseIf sender.text = "next" Then 
    SelIndex += 1 
    Else 
    SelIndex = Int32.Parse(sender.text) 
    End If 
    Dim buttons As Button() = { btn1, btn2, btn3, btn4, btn5, btn6, btn7 } 
    For i As Integer = 0 to buttons.Length - 1 
    Dim page As Integer = SelIndex + i - 3 
    If page >= 1 Then 
     buttons(i).Visible = True 
     buttons(i).Text = page.ToString 
    Else 
     buttons(i).Visible = Flase 
    End If 
    Next 
    btnPrevious.Visible = SelIndex > 1 
    Label1.Text = SelIndex 
End Sub 
관련 문제