Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个窗体vb.net调用方法_Vb.net - Fatal编程技术网

从另一个窗体vb.net调用方法

从另一个窗体vb.net调用方法,vb.net,Vb.net,我做这个应用程序已经有一段时间了,现在我想通过主窗体调用一个方法,并将它包含到另一个窗体中,使它运行我想要的。在我的主要形式中,这是我的方法: Public Sub MostrarResultadoTotal() SQLCon = New SqlConnection SQLCon.ConnectionString = "......" Try SQLCon.Open() Query = "SELECT CA

我做这个应用程序已经有一段时间了,现在我想通过主窗体调用一个方法,并将它包含到另一个窗体中,使它运行我想要的。在我的主要形式中,这是我的方法:

Public Sub MostrarResultadoTotal()
    SQLCon = New SqlConnection
    SQLCon.ConnectionString = "......"
    Try
        SQLCon.Open()
        Query = "SELECT 
                CAST(SUM(CAST(Filesize as float)) / 1024 / 1024 AS DECIMAL(10,2))
                FROM infofile"
        SqlCmd = New SqlCommand(Query, SQLCon)
        SqlDR = SqlCmd.ExecuteReader
        If SqlDR.Read() Then
            If SqlDR.IsDBNull(0) Then
                lblResultadoTotal.Text = "0,00"
            Else
                lblResultadoTotal.Text = SqlDR.GetDecimal(0)
            End If
        End If
        SQLCon.Close()
    Catch ex As SqlException
        MsgBox(ex.Message)
    Finally
        SQLCon.Dispose()
    End Try
End Sub
我想在删除按钮上调用这个。你知道我怎样才能解决我的问题吗

方法如下:

'Mudar a cor das labels dependendos to tamanho total
    Sub ChangeLabelColor()
        If lblResultadoTotal.Text <= 3.9 Then
            lblResultadoTotal.ForeColor = Color.Green
            lblGB.ForeColor = Color.Green
        ElseIf (lblResultadoTotal.Text >= 4) And (lblResultadoTotal.Text <= 6.9) Then
            lblResultadoTotal.ForeColor = Color.Orange
            lblGB.ForeColor = Color.Orange
        ElseIf lblResultadoTotal.Text >= 7 Then
            lblResultadoTotal.ForeColor = Color.Red
            lblGB.ForeColor = Color.Red
        End If
'Mudar a cor das标签依赖于tamanho总计
子ChangeLabelColor()
如果lblResultadTotal.Text=4)和(lblResultadTotal.Text=7),则
lblResultadoTotal.ForeColor=颜色.红色
lblGB.ForeColor=颜色。红色
如果结束

在这种情况下,您的方法包含数据访问逻辑,它应该与UI层逻辑(表单)分离。它应该位于单独的类中,然后由两个表单调用

Friend Class DataAccess
    Public Function MostrarResultadoTotal() As String
        SQLCon = New SqlConnection
        SQLCon.ConnectionString = "......"
        Try
            SQLCon.Open()
            Query = "SELECT 
                    CAST(SUM(CAST(Filesize as float)) / 1024 / 1024 AS DECIMAL(10,2))
                    FROM infofile"
            SqlCmd = New SqlCommand(Query, SQLCon)
            SqlDR = SqlCmd.ExecuteReader
            If SqlDR.Read() Then
                If SqlDR.IsDBNull(0) Then
                    Return "0,00"
                Else
                    Return SqlDR.GetDecimal(0)
                End If
            End If

        Catch ex As SqlException
            MsgBox(ex.Message)
        Finally
            ' Always close connection 
            SQLCon.Close()
            SQLCon.Dispose()
        End Try
    End Function
End Class
然后,从表单中声明日期访问逻辑的一个实例:

Dim dataAccess = New DataAccess();
并称之为:

lblResultadoTotal.Text = dataAccess.MostrarResultadoTotal()
适用于您的标签颜色

改变标签颜色是UI逻辑,从您的例子中,它也是可重用的。因此,您应该考虑创建一个新的类来管理常见的UI逻辑:

Friend Class CommonUILogic

    Function GetLabelColor(value As Integer) As Color
        If value <= 3.9 Then
            Return Color.Green
        ElseIf (value >= 4) And (value <= 6.9) Then
            Return Color.Orange
        ElseIf value >= 7 Then
            Return Color.Red
        End If
    End Function

End Class

在这种情况下,您的方法包含数据访问逻辑,它应该与UI层逻辑(表单)分离。它应该位于单独的类中,然后由两个表单调用

Friend Class DataAccess
    Public Function MostrarResultadoTotal() As String
        SQLCon = New SqlConnection
        SQLCon.ConnectionString = "......"
        Try
            SQLCon.Open()
            Query = "SELECT 
                    CAST(SUM(CAST(Filesize as float)) / 1024 / 1024 AS DECIMAL(10,2))
                    FROM infofile"
            SqlCmd = New SqlCommand(Query, SQLCon)
            SqlDR = SqlCmd.ExecuteReader
            If SqlDR.Read() Then
                If SqlDR.IsDBNull(0) Then
                    Return "0,00"
                Else
                    Return SqlDR.GetDecimal(0)
                End If
            End If

        Catch ex As SqlException
            MsgBox(ex.Message)
        Finally
            ' Always close connection 
            SQLCon.Close()
            SQLCon.Dispose()
        End Try
    End Function
End Class
然后,从表单中声明日期访问逻辑的一个实例:

Dim dataAccess = New DataAccess();
并称之为:

lblResultadoTotal.Text = dataAccess.MostrarResultadoTotal()
适用于您的标签颜色

改变标签颜色是UI逻辑,从您的例子中,它也是可重用的。因此,您应该考虑创建一个新的类来管理常见的UI逻辑:

Friend Class CommonUILogic

    Function GetLabelColor(value As Integer) As Color
        If value <= 3.9 Then
            Return Color.Green
        ElseIf (value >= 4) And (value <= 6.9) Then
            Return Color.Orange
        ElseIf value >= 7 Then
            Return Color.Red
        End If
    End Function

End Class


让一些东西
共享
总是最糟糕的解决方案-你会热衷于传递实例-并使用它们。这被称为“OOP”.Unrelated:你可能有兴趣知道-这是try/finally的缩写,可以帮助阅读。
共享总是最糟糕的解决方案
我不想说它不是。你如何传递方法/函数?请解释…如果他有一个类实例,他不需要共享…另一方面,ma将其设置为单独类中的函数,并在需要时调用它…我曾尝试过这样做,但在我更改它后,它给了我一个错误“无法从共享方法或共享成员中引用类的实例…”是的。Sql太@Zagglermaking something
shared
始终是最糟糕的解决方案-您希望ass实例-并使用它们。这称为“OOP”.Unrelated:你可能有兴趣知道-这是try/finally的缩写,可以帮助阅读。
共享总是最糟糕的解决方案
我不想说它不是。你如何传递方法/函数?请解释…如果他有一个类实例,他不需要共享…另一方面,ma将它设置为单独类中的函数,并在需要时调用它…我尝试过这样做,但在我更改它后,它给了我一个错误“无法从共享方法或共享成员中引用类的实例…”是的。Sql也是@ZagglerSo,在这种情况下,我有标签。我应该复制/粘贴我为一个类使用的所有方法?@Miggs创建一个单独的类,将您的方法粘贴到其中,并使其
共享
。然后您可以调用它:)建议层分离是一个高级主题。考虑添加一个具体的代码示例和/或相关文章的链接。当你返回一个字段时,我将使它成为一个函数而不是一个方法。这样你就可以在任何你想要的地方显示它,但要知道它给了我标签上的错误@扎格勒索,在这种情况下,我有标签。我应该复制/粘贴一个类的所有方法?@Miggs创建一个单独的类,将您的方法粘贴到其中,并使其
共享
。然后你可以称之为:)建议层分离是一个高级主题。考虑添加一个具体的代码示例和/或相关文章的链接。当你返回一个字段时,我将使它成为一个函数而不是一个方法。这样你就可以在任何你想要的地方显示它,但要知道它给了我标签上的错误@扎格勒