如何使用datagridview在float列中表示Infinity?

时间:2018-04-18 14:17:21

标签: c# sql vb.net datagridview

我目前的问题是我让用户使用像" MaxLimit"或类似的东西,应该代表货币价值。不幸的是,他们也希望拥有无限选项。

目前,基于较旧的代码,这是由输入999999999的用户表示的,这对我的口味有点野蛮,我想知道你如何建议代表浮动的无限值,这对用户来说很容易进入?

我最初的想法是在表格中添加一个额外的复选框列,类似于" Max Limit?"这将作为一个布尔值来表示没有限制,然后将下一列中的值保持为0并在比较的情况下跳过它。另一个想法是使用负值并通过仅比较值大于0来跳过正常验证。

我目前正在编码vb.net中的datagridview,它通过SQL保存数据。

1 个答案:

答案 0 :(得分:0)

这是一个双重问题:

  • 如何表示无限和
  • 如何将其输入DGV

对于重复,“无限”或“无限”(∞)这两个词显然是最佳的。

但如何进入最佳状态并不是那么清楚。最终,您必须与您的客户解决此问题。

这是一个适用于鼠标的上下文菜单解决方案。我确信context-menue-key也可以工作,显然取决于你是否已经有了一个上下文菜单。

如果他们更喜欢键盘解决方案,那么分配键或FKey最适合他们。

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.Button != MouseButtons.Right) return;

    if (e.RowIndex < 0 || e.ColumnIndex < 0) return;
    var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
    ContextMenu cm = new ContextMenu();
    var cm1 = cm.MenuItems.Add("Infinity");
    cm1.Click += (ss, ee) => 
    {
        dataGridView1.EndEdit();
        cell.Value =  float.PositiveInfinity;
    };
    cm.Show(dataGridView1, e.Location);
}

它会插入float.PositiveInfinty值,这具有您真正想要的优势。 Otoh你必须测试如何处理它。在数字操作中,它应该可以正常工作,但是当它写入DBMS时,它可能不会......

在单元格中,您实际上会看到一个无限字符,虽然相当小:

enter image description here