C# 在其他窗体WinC窗体中调用方法

C# 在其他窗体WinC窗体中调用方法,c#,database,winforms,linq,methods,C#,Database,Winforms,Linq,Methods,我正在制作一个带有WinC窗体应用程序的POS系统,它有一个Form1主屏幕和一个结账屏幕,可以将其视为Form2。Form1中有一个名为clearSale的方法。我试图通过表单2中的按钮事件调用它: 此事件结束后,它从Form1调用clearSale方法: clearSale方法几乎只是将所有txtbox设置回空状态,并使所有内容看起来都是全新的。我的问题是,每当在Form1中调用clearSale方法时,它都会工作,但当在Form2中调用它时,就像我试图让它不发生任何变化一样,主页面上的内容

我正在制作一个带有WinC窗体应用程序的POS系统,它有一个Form1主屏幕和一个结账屏幕,可以将其视为Form2。Form1中有一个名为clearSale的方法。我试图通过表单2中的按钮事件调用它:

此事件结束后,它从Form1调用clearSale方法:

clearSale方法几乎只是将所有txtbox设置回空状态,并使所有内容看起来都是全新的。我的问题是,每当在Form1中调用clearSale方法时,它都会工作,但当在Form2中调用它时,就像我试图让它不发生任何变化一样,主页面上的内容会发生变化。就像这个方法几乎没有被调用一样。一切都保持不变,不会被清除。有什么帮助吗?

如果要创建新的Form1对象,它将不会引用以前创建的对象。 通过构造函数参数将Form1传递给Form2

从Form1开始,您现在必须使用以下内容创建Form2:


您正在实例化一个新的Form1,而不是使用正在显示的Form1实例调出您的问题标题。你会发现数百个相同的问题和答案。
private void btnProccessComplete_Click(object sender, EventArgs e)
{
    MessageBox.Show("Order Successfully Processed for: $" + checkoutTotal.ToString("F2"), "Successful Payment", MessageBoxButtons.OK, MessageBoxIcon.Information);
    readyStock(checkoutItems);
    isCheckoutComplete = true;
    Form1 myObj = new Form1();
    myObj.clearSale();
    this.Close();
}
public void clearSale()
{
    itemList.Items.Clear();
    txtUPCScan.Clear();
    orderTotal = 0.00;
    lblTotalPrice.Text = "$0.00";
    picPay.Enabled = false;
    myShoppingCartItems = null;
    myShoppingCartItems = new string[250];
    totalItems = 0;
}
public class Form2: Form{

    Form1 mainObj;

    public Form2(Form1 _mainObj){
        this.mainObj = _mainObj;
    }

    private void btnProccessComplete_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Order Successfully Processed for: $" + checkoutTotal.ToString("F2"), "Successful Payment", MessageBoxButtons.OK, MessageBoxIcon.Information);
        readyStock(checkoutItems);
        isCheckoutComplete = true;
        this.mainObj.clearSale();
        this.Close();
    }
}
Form2 checkout = new Form2(this);