2010-05-20 69 views
1

有时候,我认为我想太复杂了,或者只是厌倦了想太多或者其他你可以指出的东西。我是不是觉得太复杂?我怎样才能简化这段代码?

我正在尝试复制在YouTube中找到的寻呼机,以获取我的Windows窗体应用程序。

这里是我迄今所做的:

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 2010-05-20 09:46:12

+0

对于初学者,你应该遍历一系列按钮。另外,我不太了解VB.Net,但是不能写'btnPrevious.Visible =(SelIndex <> 1)',或者类似的东西? – 2010-05-20 09:47:40

+0

为什么你在一个子处理所有按钮点击?我认为分开处理所有点击会更容易。 – 2010-05-20 10:02:18

回答

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 
相关问题