Ideally, the second form shouldn't ever have to know anything about the details in the first form (it only should know about the total fee). Instead, the second form should validate the payment details. The first form can then use the return result of the second form to actually proceed; either by savinf the data to the database, if the second form returned a success, or by not saving and issuing a failure message, if the second form returned a failure.
Form1:
using (Form2 form = new Form2(total))
{
if (form.ShowDialog(this) == DialogResult.OK)
{
}
else
{
}
}
Form2:
private decimal Total;
public Form2()
{
InitializeComponent();
}
public Form2(decimal total) : this()
{
Total = total;
}
private void buttonPlay_Click(object sender, EventArgs e)
{
bool paymentIsValid = ProcessPayment();
DialogResult = paymentIsValid ? DialogResult.OK : DialogResult.Cancel;
this.Close();
}
private bool ProcessPayment()
{
}