2010-11-19 11 views
1

状況が動作していない:vb.net - DataGridViewの - の書式は

私は1つの列(COL1)とのDataGridViewを持っています。

データグリッドの定義(デザインビュー)で、私はこの行を作成し、フォーマットをC2(またはC0、またはC)に設定しました。

、その後、私はプログラム的に私のデータグリッドビューをロード:

dbl_myValue as double 
dbl_myValue = 6.99 

datagridview1.item(0,0) = dbl_myValue 

のDataGridViewがcorreclyデータを示していますdatagridview.item(0,0)の6.99 $

ときI "スパイ" 、"Value"プロパティはDoubleです。

問題:ユーザーが手動で値を入力する場合

は、それが動作しません:(煩雑さを避けるために、小数点なし、のは、100を言わせて)数値を入力し、セルをクリックし、 セルを残してください(の編集モードではありません)。 フォーメーションはちょうど適用されません。

私がdatagridview.item(0,0)に「スパイ」すると、「値」プロパティはSTRINGです。

これは問題だと思いますが、どうすればいいですか?

私はCellValidatingに行くことをしようとしたようなコードでそれを詰めました:

Private Sub DataGridView1_CellValidating(....) 

Dim c As Control = DataGridView_WorkOrderAddition.EditingControl 

c.text = formatNumeric(c.text) 

c.text = convert.toDouble(c.text) 

しかし、それはまだ動作しません。

答えて

3

はい、DGVがバインドされていない場合、セルはデフォルトで文字列を格納します。列のCellTypeプロパティを設定することで、それを解決することができます。小数は、金額を処理するのに最も適しています。また、文字列を変換できないことをユーザーに警告できるように、DataErrorイベントを実装する必要があります。したがって:

Public Class Form1 
    Public Sub New() 
     InitializeComponent() 
     DataGridView1.Columns(0).ValueType = GetType(Decimal) 
    End Sub 

    Private Sub DataGridView1_DataError(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError 
     MessageBox.Show(e.Exception.Message) 
    End Sub 
End Class 
関連する問題