2016-08-31 6 views
0

Usercontrol(Add_companies)を作成してパネルに追加しようとしています すべて正常に動作しますが、ユーザーコントロールに接続を追加すると、エラー:UserControlで接続文字列を追加するとエラーが発生する

変数 '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

と私は何もないコード行のエラーに行きます。

+0

この変数 'Add_companies1'を使用した行を含むコードを投稿してください。あなたのエラーはおそらく、宣言されていないか、または割り当てられていない 'Add_companies1'を参照することによって起こります。 – FrozenFire

+0

はい私はなぜそれが "Add_companies1"と私のUsercontrolの名前が "Add_companies"を参照しているのかわかりません この接続作業はすべてのフォームで完璧ですが、私はUserControl 私はパネルを使用して私は設計にエラーを与える。 –

+0

どのステートメントでエラーが発生していますか? – Blackwood

答えて

1

このコードをUserControlに配置し、フォームデザイナーがエラーをスローしていることを示しています。 VS IDEは、設計時にユーザーコントロールのインスタンスをロードして実行しています。

ProtectedPublicアクセス修飾子をサポートするには、これらの3行のコードをクラスレベルに配置する必要があります。問題は、Dim Conn As New SqlConnection(configuracion.ConnectionString)で使用される場合、configuracionがnullであるように、デザイナーがConfigurationManager.ConnectionStrings("Conn")を検索できないことです。

クラスレベルでDim var as New Something()という構文を使用すると、コンパイラはそれをDim var as Somethingに変換し、var = New Something()をクラスコンストラクター(サブ新規)コードに置きます。

この問題を解決するには、デザインモードで実行中にエラーが発生するコードを防ぐ必要があります。すべてのコントロールには、この目的のために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 
+0

完璧な男この作品は感謝します:) –

関連する問題