Add currency fields to get a subtotal, then add other values but only if the relevant checkbox is checked
//Add up some values which are always part of the subtotal
decimal subtotals = val1 + val2 + val3 + val4 + val5 + val6 + val7 + val8;

decimal ditem1Cost;
if (Item1RateYN.Checked) {
    decimal.TryParse(item1Cost.Value.ToString(), out ditem1Cost); 
    subtotals+=ditem1Cost;
}
decimal ditem2Cost;
if (Item2RateYN.Checked) {
    decimal.TryParse(item2Cost.Value.ToString(), out ditem2Cost);
    subtotals+=ditem2Cost;
}


Is slightly better.

If using C#7 remove decimal ditem1Cost = 0; and replace decimal.TryParse(item2Cost.Value.ToString(), out ditem1Cost) with decimal.TryParse(item2Cost.Value.ToString(), out decimal cost)