2016-07-06 13 views
1

なしのDataGridViewCell値を抽出します。構文は、私がこれを行うことができます知っている変換

あなたはセルタイプDoubleの値が含まれていることを確認し、その後DirectCast

Dim Amount As Double = DirectCast(DGVRow.Cells("Amount").Value, Double) 

他の方法を使用している場合

Dim Amount As Double = DGVRow.Cells.OfType(Of Double)("Amount").Value 
+0

カラム/セルには何かを含める必要があるため、値はボックス化されていることを意味する 'Object'を返します。あなたがデータソースを持っているなら、あなたは何を求めているのですか? 'Dim d = dt.Rows(n).Field(Of Double)(" Amount ")'。まだコンバージョンはありますが、まったく別の種類です。 – Plutonix

+0

@Plutonixいいえ、小数点以下はお金の種類の値に適しています。この場合、ソースとしてデータセットはありません。 Doubleを使う計算をしなければならないので、私は「Double」を選びました。極端な精度は必要ありません。とにかくあなたの貴重なヒントのためにありがとう;) – genespos

+0

*特にお金*と*計算されている場合、 'Decimal'は良い選択です。丸めエラーを防止します - http://stackoverflow.com/q/1165761およびhttp://stackoverflow.com/q/890100を参照してください。 – Plutonix

答えて

1

Doubleが常に含まれることがわかっている場合は、sh DirectCast

Dim Amount As Double = DirectCast(DGVRow.Cells("Amount").Value, Double) 

を使用ウルドこれらはすべて、ダブル

Dim value As Object 
value = 1.23# 
Dim resultDC = DirectCast(value, Double) 
Dim resultCT = CType(value, Double) 
Dim resultCDBL = CDbl(value) 

タイプの結果の変数を生成しかし、舞台裏で起こって異なるものがあります。 DirectCastは最も簡単です。

この投稿を確認してくださいDifference between DirectCast() and CType() in VB.NET VB.netでの変換方法の違いを詳しく説明しています。これもまたVB CStr, CDate, CBool, etc. vs. DirectCast for casting without conversionです。

基本的にDirectCastは、オブジェクトに期待するタイプが含まれていることがわかっているので、変換は必要ありません。それは他のオプションより速くなります。

1

私は以下のコードを試してみた(しかし、それが正しい構文ではありません) @Plutonixがコメントで説明したように、有界のDataSourceの値をそのまま使用します。

関連する問題