在UserControl中添加连接字符串时出错

时间:2016-08-31 01:33:08

标签: vb.net

我正面临一个奇怪的问题,我正在尝试创建Usercontrol(Add_companies)并将其添加到面板 一切正常,但当我将连接添加到用户控件时,我遇到了这个错误:

变量'Add_companies1'要么未声明,要么从未分配过。

这是我的联系:

Protected configuracion As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("Conn")
Dim Conn As New SqlConnection(configuracion.ConnectionString)
Public Cmd As SqlCommand

Error one image

where the error code must be

当我转到代码行错误时,什么都没有。

1 个答案:

答案 0 :(得分:1)

Protected configuracion As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("Conn")
Dim Conn As New SqlConnection(configuracion.ConnectionString)
Public Cmd As SqlCommand

您表示您已将此代码放在UserControl中,现在表单设计器正在抛出错误。当VS IDE放置在设计图面上时,VS IDE正在加载并运行usercontrol的实例。

这三行代码必须放在类级别,以支持ProtectedPublic访问修饰符。问题是设计人员无法检索ConfigurationManager.ConnectionStrings("Conn"),因此configuracionDim Conn As New SqlConnection(configuracion.ConnectionString)中使用时为{null}。

在类级别使用语法:Dim var as New Something()时,编译器会将其转换为Dim var as Something并将var = New Something()放入类构造函数(Sub New)代码中。

要解决此问题,您需要阻止在设计模式下执行时会引发错误的代码。为此,所有控件都有一个名为DesignMode的布尔属性。请注意,如果在构造函数代码中使用DesignMode将无效,因此尝试使用它将失败。

Imports System.Configuration
Imports System.Data.SqlClient

Public Class Add_companies
    Protected configuracion As ConnectionStringSettings
    Private Conn As SqlConnection
    Public Cmd As SqlCommand

    Private Sub Add_companies_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        If Not Me.DesignMode Then
            configuracion = ConfigurationManager.ConnectionStrings("Conn")
            Conn = New SqlConnection(configuracion.ConnectionString)
        End If
    End Sub
End Class