-2

私はコードを持っています。3000より大きい数値を入力するまでは問題ありません。結果負の数値になります。助けてください。

なぜそれが起こったのかわかりません。すでにデバッグしていますか、それともintで宣言していますか?

私が言及する合計値は、 int total= 数量 * コストです。

ところで、数量列への数値以外のユーザータイプを防ぐ方法はありますか?

 private void G2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            int quantity, cost;
            if (int.TryParse(G2.Rows[e.RowIndex].Cells["Quantity"].Value.ToString(), out quantity) && int.TryParse(G2.Rows[e.RowIndex].Cells["Cost2"].Value.ToString(), out cost))
            {
                int total= quantity * cost;
                G2.Rows[e.RowIndex].Cells["Total"].Value = total.ToString();
            }

            int quan, mini;

            quan = Convert.ToInt32(G2.Rows[e.RowIndex].Cells["Quantity"].Value);
            mini = Convert.ToInt32(G2.Rows[e.RowIndex].Cells["MinimumOrder2"].Value);

            if (quan < mini)
            {
                MessageBox.Show("QUANTITY must be GREATER or EQUAL to MINIMUM ORDER", "STOP", MessageBoxButtons.OK, MessageBoxIcon.Error);
                G2.Rows[e.RowIndex].Cells["Quantity"].Value = "";
                G2.Rows[e.RowIndex].Cells["Total"].Value = "";
                return;

            }
            else
            {
                //Sum the Total Column to TOTAL VALUES text box
                decimal TotalValue = 0;
                for (int i = 0; i < G2.Rows.Count; i++)
                {
                    if (G2.Rows[i].Cells["Total"].Value == DBNull.Value)
                    {
                        return;
                    }
                    else
                    {
                        TotalValue += Convert.ToDecimal(G2.Rows[i].Cells["Total"].Value);
                    }
                }

                totalvalue.Text = TotalValue.ToString();
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show("Please Enter Only Number");
            return;
        }

    }

ユーザーによる入力例

4

3 に答える 3

0

もう1つの問題は、ユーザーが合計に値を入力できるようにすることです。以下は、数量フィールドで数値のみを許可するコードです

private void G2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        String sCellName = G2.Columns[G2.CurrentCell.ColumnIndex].Name.ToUpper();
        if (sCellName == "QUANTITY") //----change with yours
        {

            e.Control.KeyPress +=  new KeyPressEventHandler(Control_KeyPress);


        }
    }

    private void Control_KeyPress(object sender, KeyPressEventArgs e)
    {

        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
        {
            e.Handled = true;
        }

        // only allow one decimal point
        if (e.KeyChar == '.'
            && (sender as TextBox).Text.IndexOf('.') > -1)
        {
            e.Handled = true;
        }
    }
于 2017-03-14T07:53:58.417 に答える