2

我正在使用数据网格视图,这个数据网格视图允许用户编辑单元格,我想设置它,以便当用户插入负值时,它会将这个值转换为 0,最好的编码方式是什么这个,我在下面创建了以下代码,它似乎检查负值,但它不会将值更改为零

if (Convert.ToInt32(dgvDetails.CurrentRow.Cells[2].Value.ToString()) < -0)
                {
                   intQtyInsp = 0;
                }
                else
                {
                intQtyInsp = Int32.Parse(row.Cells[2].Value.ToString());
4

6 回答 6

2

那可能是因为dgvDetails.CurrentRow.Cells[2].Value.ToString()并且row.Cells[2].Value.ToString()可能不是您正在检查的同一单元格..

于 2012-07-24T12:29:08.083 回答
1
intQtyInsp =Int32.Parse(dgvDetails.CurrentRow.Cells[2].Value.ToString());

if(intQtyInsp < 0)
  {
     intQtyInsp = 0;
  }
于 2012-07-24T12:32:48.947 回答
1

这将满足您的要求

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    DataGridViewCell currentCell = 
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
    int cellValue = Convert.ToInt32(currentCell.Value);
    if (cellValue < 0)
        currentCell.Value = 0.ToString();
}

我希望这有帮助。

于 2012-07-24T12:34:40.867 回答
0

我建议使用扩展方法来确保用户是否输入了 int。

扩展方法

public static class StringExtension
{
    public static int TryConvertToInt32(this string value)
    {
        int result = 0;
        if (Int32.TryParse(value, out result))
            return result;
        return result;
    }
}

用法

// call the extension method
int intQtyInsp = dgvDetails.CurrentRow.Cells[2].Value.ToString().TryConvertToInt32();

// And check for lower than zero values.
intQtyInsp = intQtyInsp >= 0 ? intQtyInsp : 0;
于 2012-07-24T12:30:09.233 回答
0
int valueFromCell =  Convert.ToInt32(dgvDetails.CurrentRow.Cells[2].Value.ToString());
intQtyInsp = valueFromCell < 0 
               ?  0
               : valueFromCell ;
于 2012-07-24T12:34:17.703 回答
0
if(score < 0) { *score = 0; }
于 2016-10-10T16:36:46.213 回答