誰かがこのエラーを修正するのを手伝ってもらえますか?
Option Strict Onは、遅延バインディングを許可しません
エラーの原因となっているコードは次のとおりです。
Dim SF6StdData As BindingSource = New BindingSource()
' ...
If StrComp(SF6StdData.Current("O2AreaCts").ToString, "") = 0 Then
AreaCts(3) = 0
Else
AreaCts(3) = Convert.ToDouble(SF6StdData.Current("O2AreaCts").ToString)
End If
エラーが発生しないようにコードを書き直す必要があります。プロジェクトのプロパティでOptionStrictをOffに設定することでこれを修正できることはわかっていますが、実際には修正したくありません。他に方法はありますか?
Option Strict
がオンの場合、遅延バインディングは許可されません。遅延バインディングを実行する必要がある場合、唯一のオプションは、リフレクションを使用するか、Option Strict
をシャットオフすることです。ただし、1つの節約の恩恵は、プロジェクト全体でOption Strict
を停止する必要がないことです。プロジェクト用にオンのままにして、遅延バインディングを実行する必要があるコードファイルの先頭にOption Strict Off
行を追加するだけです。これは優れたソリューションではありませんが、プロジェクト全体に影響を与えるよりはましです。
また、ファイルの先頭に配置されたOption Strict
はそのファイルにのみ適用されるため、クラス全体に適用する必要はありません。クラスを複数のPartial Class
ファイルに分割する場合は、それらのファイルごとにOption Strict
を異なる方法で設定できます。たとえば、クラスの大部分をOptions Strict On
のファイルに入れ、次に1つのメソッドをPartial Class
の別のファイルのOption Strict Off
に入れると、その1つのメソッドだけが大まかにコンパイルされます。クラスの残りの部分は、厳密なルールを使用してコンパイルされます。
BindingSourceを厳密に型指定されたデータソースとして機能させる必要があります。ドキュメントの注釈を参照してください: http://msdn.Microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx
型なしでAreaCts
を宣言した場合、例:
Dim AreaCts as Array
試してみてください
Dim AreaCts() as Double
これにより、遅延バインディングエラーが修正されました。