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
if(score < 0) { *score = 0; }
于 2016-10-10T16:36:46.213 に答える
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 に答える