.net 自定义双精度格式
我将.net 自定义双精度格式,.net,vb.net,winforms,.net,Vb.net,Winforms,我将DataGridView绑定到数据集中的DataTable 我将数据表的所有列设置为System.Double 我希望DataGridView的最后一行根据该列中值的某些条件显示的“通过”或的“失败” 我该怎么做 想法: lastCell=IIF(条件,双正,双负) 然后,对DataGridView的最后一行应用一些条件格式(Inf->PASS,-Inf->FAIL)。为什么不向布尔类型的表中添加一个额外的列呢?布尔值在这里更合适,因为您有两个状态中的一个,它要么通过(true),要么不通过
DataGridView
绑定到数据集中的DataTable
我将数据表的所有列设置为System.Double
我希望DataGridView
的最后一行根据该列中值的某些条件显示的“通过”或的“失败”
我该怎么做
想法:
lastCell=IIF(条件,双正,双负)
然后,对DataGridView的最后一行应用一些条件格式(Inf->PASS,-Inf->FAIL)
。为什么不向布尔类型的表中添加一个额外的列呢?布尔值在这里更合适,因为您有两个状态中的一个,它要么通过(true),要么不通过(fail)
您可以添加额外的值并手动填充这些值,也可以使用,然后将列表绑定到DataGridView上具有“PASS”列的列表。为什么不向布尔类型的表添加额外的列?布尔值在这里更合适,因为您有两个状态中的一个,它要么通过(true),要么不通过(fail)
您可以添加额外的值并手动填充这些值,或者您可以使用,然后将列表绑定到DataGridView上具有“通过”列的列表。构建您的条件,使其计算为>=0表示“通过”,或<0表示“失败”,并在绑定到网格之前应用它(可能在查询本身中)。然后在网格中的列的DefaultCellStyle.format
属性上使用此格式字符串:
{0:“通过”;“失败”}
以这样的方式构建您的条件:它的计算结果为>=0表示“通过”,或<0表示“失败”,并在绑定到网格之前应用它(可能在查询本身中)。然后在网格中的列的DefaultCellStyle.format
属性上使用此格式字符串:
{0:“通过”;“失败”}
您可能会创建并使用自定义的NumberFormatInfo
,将PositiveInfinitySymbol
和NegativeInfinitySymbol
设置为所需的字符串
但我认为最好在DataGridView.CellFormatting
事件处理程序中执行类似操作,这样可以更清楚地了解您正在执行的操作以及原因,并且不会产生不良的副作用,例如,如果另一个单元格由于被零除而恰好具有无穷大的值
类似于以下航空代码:
void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if ((e.ColumnIndex == whatever) && (c.RowIndex == whatever))
{
// ... comment explaining what you're doing
if (condition)
{
e.Value = "PASS";
}
else
{
e.Value = "FAIL";
}
e.FormattingApplied = true;
}
}
对于C代码表示歉意,因为您已经将问题标记为VB.NET,但是您可以在CellFormatting事件的MDSN文档中找到VB.NET示例。您可能可以创建并使用自定义的NumberFormatInfo
,将PositiveInfinitySymbol
和NegativeInfinitySymbol
设置为所需字符串
但我认为最好在DataGridView.CellFormatting
事件处理程序中执行类似操作,这样可以更清楚地了解您正在执行的操作以及原因,并且不会产生不良的副作用,例如,如果另一个单元格由于被零除而恰好具有无穷大的值
类似于以下航空代码:
void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if ((e.ColumnIndex == whatever) && (c.RowIndex == whatever))
{
// ... comment explaining what you're doing
if (condition)
{
e.Value = "PASS";
}
else
{
e.Value = "FAIL";
}
e.FormattingApplied = true;
}
}
对于C#代码表示歉意,因为您已将问题标记为VB.NET,但您会在CellFormatting事件的MDSN文档中找到VB.NET示例。通过/失败适用于该列的值。让它成为最后一排会更有意义。另外,在我的情况下,转换网格(使状态集合成为列而不是行)没有意义。通过/失败适用于该列的值。让它成为最后一排会更有意义。另外,在我的情况下,转换网格(使状态集合成为一列而不是一行)没有意义。您如何定义“最后一行”它是数据表中的一行?还是要创建一个附加行?datagridview没有像“最后一行”这样的概念,因为它需要处理排序等问题。如果最后一行随时间而按“最后一行”更改,我指的是datagridview中的底行,我只想根据该列中的值显示通过/失败。正如Joe所描述的,我添加了一个DataGridView CellFormatting事件处理程序,它检查列并相应地显示通过/失败。您如何定义“最后一行”它是datatable中的一行?还是要创建一个附加行?datagridview没有像“最后一行”这样的概念,因为它需要处理排序等问题。如果最后一行随时间而按“最后一行”更改,我指的是datagridview中的底行,我只想根据该列中的值显示通过/失败。正如Joe所描述的,我添加了一个DataGridView CellFormatting事件处理程序,它检查列并相应地显示通过/失败。