2010-05-20 5 views
1

Eh bien parfois, je crois que je suis trop compliqué ou que je suis fatigué de penser trop ou quelque chose d'autre que vous pourriez pointer. Je suis en train de copier le pager trouvé dans YouTube pour une de mes applications Windows Forms.Est-ce que je pense trop compliqué? Comment puis-je simplifier ce morceau de code?

Et voici ce que je l'ai fait jusqu'à présent:

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 

Le premier problème semble être que je fais des cercles dans le sable. Je n'aime pas la façon dont j'ai écrit le code ET ne fonctionne pas comme prévu. Donc, la question est: comment pourrais-je simplifier celui-ci?

+0

Eh oui, vous avez besoin des vacances – Raj

+0

Pour commencer, vous devez itérer sur une liste de boutons. Aussi, je ne connais pas très bien VB.Net, mais ne peux-tu pas écrire 'btnPrevious.Visible = (SelIndex <> 1)', ou quelque chose comme ça? –

+0

Pourquoi manipulez-vous tous les clics de bouton dans un sous-marin? Je pense qu'il serait plus facile de gérer tous les clics séparément. –

Répondre

0

Déterminez d'abord la nouvelle page, puis définissez le texte sur les boutons et autres. Quelque chose comme:

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 
Questions connexes