Vb.net 使用内部调用的不同函数调用同一个函数

Vb.net 使用内部调用的不同函数调用同一个函数,vb.net,visual-studio-2015,Vb.net,Visual Studio 2015,我希望我的标题是清楚的。让我解释一下。我有4个按钮,它们的功能基本相同 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", "")

我希望我的标题是清楚的。让我解释一下。我有4个按钮,它们的功能基本相同

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
Private子按钮2\u单击(发送者作为对象,e作为事件参数)处理按钮2。单击
LimiteGlobalSeparador=输入框(“tubo中心距离介绍”、“数据、分类”和“)
尺寸a、b、c、d、f、g作为新标签
尺寸o、p、q、r、s、t作为新标签
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”
对于i=0到5
TableLayoutPanel1.Controls.Add(a,0,i)
下一个
如果是TextBox1.Text 0,则
对于j=1到Int(TextBox1.Text)
尺寸x作为新列表(十进制)
x=MedTuboFuncPCT()
对于i=0到x,计数为-1
作为新标签的Dim lbl
lbl.Text=Math.Round(x(i),2)
TableLayoutPanel1.控件.添加(lbl,j,i)
下一个
ContadorGlobal=ContadorGlobal+1
下一个
其他的
如果结束
ContadorGlobal=0
作为整数的Dim h
h=Int(TextBox2.Text-TextBox1.Text)
如果是TextBox2.Text 0,则
如果h=Int(TextBox2.Text),则
对于j=1到Int(TextBox2.Text)
尺寸x作为新列表(十进制)
x=MedTuboFunCTCT()
对于i=0到x,计数为-1
作为新标签的Dim lbl
lbl.Text=Math.Round(x(i),2)
TableLayoutPanel1.控件.添加(lbl,j,i)
下一个
ContadorGlobal=ContadorGlobal+1
下一个
其他的
ContadorGlobal=0
对于j=Int(1)+Int(TextBox1.Text)到(Int(TextBox1.Text)+Int(TextBox2.Text))
尺寸x作为新列表(十进制)
x=MedTuboFunCTCT()
对于i=0到x,计数为-1
作为新标签的Dim lbl
lbl.Text=Math.Round(x(i),2)
TableLayoutPanel1.控件.添加(lbl,j,i)
下一个
ContadorGlobal=ContadorGlobal+1
下一个
如果结束
如果结束
ContadorGlobal=0
如果是TextBox3.Text 0,则
尺寸x作为新列表(十进制)
x=MedTuboFuncPP()
对于i=0到x,计数为-1
作为新标签的Dim lbl
lbl.Text=Math.Round(x(i),2)
TableLayoutPanel1.Controls.Add(lbl,1,i)
下一个
如果结束
如果Te180>0,则
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”
对于i=6到11
TableLayoutPanel1.Controls.Add(o,0,i)
下一个
如果结束
端接头
所以我试着创建一个子按钮,然后每个按钮调用这个子按钮,这样我就不会像现在这样在每个按钮中重复代码。唯一的变化是:

一个按钮调用这个函数<代码>x=MedTuboFuncPCT()。

另一个调用
x=MedTuboFuncPCTVid()

另一个调用


我不知道如何制作一个能让我改变现状的潜艇。希望我足够清楚。提前感谢。

创建您的函数并发送其中的值,以便您可以更改
x
函数

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  VFunction = 1
  RepeatedCode(VFunction)
End Sub
按按钮2
VFunction=2
依此类推。然后创建你的函数

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
我相信
If
条件必须放在
If文本框1.Text 0

因为它是我看到您使用您提到的函数之一的唯一地方

,所以您应该尝试编写方法来完成一件简单的事情。据我所知,这个点击事件有5个。如果每个块都是它自己的子块,则可以混合并匹配“通用”“根据需要使用更精细的:。简单性是可重用性的核心。顺便说一句,似乎创建了大量从未使用或处理过的标签。您还应该启用
选项Strict
,以便IDE可以警告您可疑的类型转换。谢谢您的建议。我正在为我的公司做一个项目。我不是程序员,但我知道一些基本的东西,喜欢编程。所以我为这个程序编写的第一个代码就是一次又一次的重复代码。当我想在新程序中添加一些东西时,我意识到我需要使我的代码更简单,否则每次我试图添加一些东西时,我都会很挣扎。再次感谢您的建议,因为我希望代码简单。我想你已经在我的一个问题上帮了我!编辑:所有的标签都被使用,顺便说一句:)哦,是的,你说得对!我只是运行程序,没有使用一些标签。我以前的代码是: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”TableLayoutPanel1.Controls.Add(a,0,0)TableLayoutPanel1.Controls.Add(b,0,1)TableLayoutPanel1.Controls.Add(c,0,2)TableLayoutPanel1.Controls.Add(d,0,0,3)TableLayoutPanel1.Controls.Add(f,0,4)TableLayoutPanel1.控件.添加(g,0,5)我试图使用for循环,但我刚刚意识到我的错误。我认为这可能正好有效!谢谢你的想法。这正是我想要的。