Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 自定义双精度格式_.net_Vb.net_Winforms - Fatal编程技术网

.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事件处理程序,它检查列并相应地显示通过/失败。