J'ai le code, tout va bien jusqu'à ce que je mets le nombre plus grand que 3000, le résultat sera nombre négatif, s'il vous plaît aider.Calcul de la valeur totale est incorrect
Je ne sais pas pourquoi c'est arrivé, je l'ai déjà débogué, ou à propos de je le déclare par int?
La valeur totale que je mentionne est int total = quantité * coût;
Et en passant, est de toute façon à empêcher type d'utilisateur quoi que ce soit d'autre, sauf à format: numérique colonne Quantité?
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;
}
}
Pourriez-vous montrer aussi le code de votre DataGrid? – Mixxiphoid
@Mixxiphoid tout fonctionne bien sauf cela. – Serenade
Pourquoi n'essayez-vous pas d'utiliser le débogueur pour vérifier ce qu'il se passe dans ce code? Cela semble quelque chose lié à vos données réelles. – Steve