Simple: if there is no value in your TextBox when you change the value in the NumericUpDown, then the conversion from a string will fail.
Try this instead:
public void Multiply()
{
int price;
if (int.TryParse(textBox3.Text, out price))
{
int quantity = (int)numericUpDown1.Value;
int total = quantity * price;
textBox1.Text = total.ToString();
}
}