2016-04-27 14 views
1

Ich hoffe, mein Titel ist klar. Lassen Sie mich erklären. Ich habe 4 Knöpfe, die ziemlich genau dasselbe tun.Aufruf der gleichen Funktion mit verschiedenen Funktionen namens innerhalb

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    LimiteGlobalSeparador = InputBox("Introduzca la distancia máxima entre huecos en el tubo", "Cuadro de Datos, Separaciones", "") 
    Dim a, b, c, d, f, g As New Label 
    Dim o, p, q, r, s, t As New Label 
    a.Text = "Medida del Tubo" 
    b.Text = "Espacio 1" 
    c.Text = "Espacio 2" 
    d.Text = "Espacio 3" 
    f.Text = "Espacio 4" 
    g.Text = "Espacio 5" 
    For i = 0 To 5 
     TableLayoutPanel1.Controls.Add(a, 0, i) 
    Next 
    If TextBox1.Text <> 0 Then 
     For j = 1 To Int(TextBox1.Text) 
      Dim x As New List(Of Decimal) 
      x = MedTuboFuncPCT() 
      For i = 0 To x.Count - 1 
       Dim lbl As New Label 
       lbl.Text = Math.Round(x(i), 2) 
       TableLayoutPanel1.Controls.Add(lbl, j, i) 
      Next 
      ContadorGlobal = ContadorGlobal + 1 
     Next 
    Else 
    End If 

    ContadorGlobal = 0 

    Dim h As Integer 
    h = Int(TextBox2.Text - TextBox1.Text) 
    If TextBox2.Text <> 0 Then 
     If h = Int(TextBox2.Text) Then 
      For j = 1 To Int(TextBox2.Text) 
       Dim x As New List(Of Decimal) 
       x = MedTuboFunCTCT() 
       For i = 0 To x.Count - 1 
        Dim lbl As New Label 
        lbl.Text = Math.Round(x(i), 2) 
        TableLayoutPanel1.Controls.Add(lbl, j, i) 
       Next 
       ContadorGlobal = ContadorGlobal + 1 
      Next 
     Else 
      ContadorGlobal = 0 
      For j = Int(1) + Int(TextBox1.Text) To (Int(TextBox1.Text) + Int(TextBox2.Text)) 
       Dim x As New List(Of Decimal) 
       x = MedTuboFunCTCT() 
       For i = 0 To x.Count - 1 
        Dim lbl As New Label 
        lbl.Text = Math.Round(x(i), 2) 
        TableLayoutPanel1.Controls.Add(lbl, j, i) 
       Next 
       ContadorGlobal = ContadorGlobal + 1 
      Next 
     End If 
    End If 

    ContadorGlobal = 0 
    If TextBox3.Text <> 0 Then 
     Dim x As New List(Of Decimal) 
     x = MedTuboFuncPP() 
     For i = 0 To x.Count - 1 
      Dim lbl As New Label 
      lbl.Text = Math.Round(x(i), 2) 
      TableLayoutPanel1.Controls.Add(lbl, 1, i) 
     Next 
    End If 
    If Te180 > 0 Then 
     o.Text = "Medida del Tubo" 
     p.Text = "Espacio 1" 
     q.Text = "Espacio 2" 
     r.Text = "Espacio 3" 
     s.Text = "Espacio 4" 
     t.Text = "Espacio 5" 
     For i = 6 To 11 
      TableLayoutPanel1.Controls.Add(o, 0, i) 
     Next 
    End If 
End Sub 

So versuche ich einen Sub zu erstellen und dann diese Unter jeder Taste rufen, so habe mich keinen Code in jeder Taste zu wiederholen, wie ich jetzt habe. Die einzige Änderung ist hier:

Ein Knopf ruft diese Funktion auf. x = MedTuboFuncPCT().

Eine andere nennt man x = MedTuboFuncPCTVid()

Eine andere nennt man x = MedTuboFuncPCTVidBB()

Ich weiß nicht, wie man eine Sub zu machen, in dem ich diesen Unterschied machen kann. Hoffe ich bin klar genug. Danke im Voraus.

+1

erwähnen Sie sollen versuchen, Methoden zu schreiben, die eine einfache Sache zu tun . Wie ich am besten erkenne, ist dieses Klickereignis 5. Wenn jeder Block sein eigenes Sub war, könnten Sie die "generischen" mit den verfeinerten nach Bedarf kombinieren: [Single Responsibility Principle] (https: // en. wikipedia.org/wiki/Single_responsibility_principle) Einfachheit ist das Herz der Wiederverwendbarkeit.Weiterhin scheint es eine große Anzahl von erstellten Etiketten zu geben, die niemals verwendet oder entsorgt werden – Plutonix

+1

Sie sollten auch 'Option Strict' einschalten, damit die IDE Sie warnen kann von zweifelhaften Typumwandlungen. – Plutonix

+0

Danke für den Rat. Ich arbeite an einem Programm für meine Firma. Ich bin kein Programmierer, aber ich kenne einige der grundlegenden Sachen und liebe zu programmieren. So der erste Code, den ich dafür gemacht habe Programm war eine große Wiederholung von Teilen des Codes immer und immer wieder Wenn ich etwas zu dem Programm hinzufügen wollte, realisierte ich, dass ich meinen Code einfacher machen muss, sonst werde ich jedes Mal, wenn ich versuche, etwas hinzuzufügen, Nochmals vielen Dank für den Rat, denn was ich sehe ist, dass mein Code einfach ist. Und ich denke du hast mir schon bei einer meiner Fragen geholfen! Edit: Alle Labels werden übrigens verwendet :) –

Antwort

1

Ihre Funktion erstellen und einen Wert darin senden, so dass Sie die x Funktion

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    VFunction = 1 
    RepeatedCode(VFunction) 
End Sub 

auf Button2 VFunction = 2 und so weiter ändern. Dann erstelle deine Funktion.

Public Sub RepeatedCode (ByVal VFunction as integer) 
    If VFunction = 1 Then 
     x = MedTuboFuncPCT() 
    ElseIf VFunction = 2 Then 
     x = MedTuboFuncPCTVid() 
    ElseIf VFunction = 3 Then 
     x = MedTuboFuncPCT() 
    End If 

    'The Rest of your code 

Ich glaube der If Zustand in Ihrem gestellt werden muss If TextBox1.Text <> 0 Da es sein der einzige Ort, wo ich sehe, Sie verwenden eine der Funktionen Sie

+0

Ich denke, das könnte genau richtig funktionieren! Danke für die Idee. Genau das habe ich gesucht. –

Verwandte Themen