首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

怎么使DataGridView的单元格中负数显示为红色,正数显示为蓝色

2011-12-28 
如何使DataGridView的单元格中负数显示为红色,正数显示为蓝色。目前在做一个凭证录入和程序,现在有这样一个

如何使DataGridView的单元格中负数显示为红色,正数显示为蓝色。
目前在做一个凭证录入和程序,现在有这样一个问题:
在录入金额的时候,如果用户输入负数,则本单元格显示为红色,且不显示负号。
当金额为正数的时候则显示为蓝色。

目前我是这样处理的:
      Try
                        If   dgrd3.Columns(e.ColumnIndex).Name   =   "FAmountFor "   Or   dgrd3.Columns(e.ColumnIndex).Name   =   "FDebitAmount "   Or   dgrd3.Columns(e.ColumnIndex).Name   =   "FCreditAmount "   Then
                                If   e.Value   Is   Nothing   Then
                                        Exit   Sub
                                End   If

                                If   e.Value   Is   DBNull.Value   Then
                                        Exit   Sub
                                End   If

                                If   IsNumeric(e.Value)   =   False   Then
                                        e.Value   =   0
                                End   If

                                If   e.Value   <   0   Then
                                        e.CellStyle.ForeColor   =   Color.Red
                                Else
                                        e.CellStyle.ForeColor   =   Color.Blue
                                End   If
                        End   If
                Catch   ex   As   Exception
                        MsgBox( "dgrd3_CellFormatting: "   +   ex.ToString,   MsgBoxStyle.Critical   +   MsgBoxStyle.OkOnly,   Msg.CompanyName)
                End   Try

但没法去掉负号(-),请问可否使用:Style.Format或者其他方法处理,谢谢!

[解决办法]
If e.Value < 0 Then
e.CellStyle.ForeColor = Color.Red
Else
e.CellStyle.ForeColor = Color.Blue
End If



If e.Value < 0 Then
e.CellStyle.ForeColor = Color.Red
e.Value *= -1


Else
e.CellStyle.ForeColor = Color.Blue
End If

可以么,呵呵。有点偷鸡的感觉。
[解决办法]
自己扫循环
for(int i=0;i <DataGridView.rows.count;i++)
{
for(int k=0;k <DataGridView.cloumn.count;k++)
{
if(DataGridView.rows[i].cell[k].value> =0)
{
DataGridView.rows[i].cell[k].backcolor=Color.Blue
}
else
{
DataGridView.rows[i].cell[k].value=DataGridView.rows[i].cell[k].value *(-1)
DataGridView.rows[i].cell[k].backcolor=Color.red

}

}

}
[解决办法]
这个办法好像不错,也可行。我怎么没想到?
[解决办法]
试了一下,还真行。可能看齐来笨了点,呵呵。

For i As Int32 = 0 To DataGridView1.Rows.Count - 1
For j As Int32 = 0 To DataGridView1.Columns.Count - 1
If IsNumeric(DataGridView1.Rows(i).Cells(j).Value) Then
If DataGridView1.Rows(i).Cells(j).Value < 0 Then
DataGridView1.Rows(i).Cells(j).Value *= -1
DataGridView1.Rows(i).Cells(j).Style.ForeColor = Color.Red
Else
DataGridView1.Rows(i).Cells(j).Style.ForeColor = Color.Blue
End If
End If
Next
Next
[解决办法]
可以通过颜色再判断正负号啊。
[解决办法]
输入的时候直接判断啊!
[解决办法]
用验证单元格来判断,Datagridview有这个事件~~~~
[解决办法]
可以写在EditCompleted事件中。

热点排行