C# 在其他窗体WinC窗体中调用方法
我正在制作一个带有WinC窗体应用程序的POS系统,它有一个Form1主屏幕和一个结账屏幕,可以将其视为Form2。Form1中有一个名为clearSale的方法。我试图通过表单2中的按钮事件调用它: 此事件结束后,它从Form1调用clearSale方法: clearSale方法几乎只是将所有txtbox设置回空状态,并使所有内容看起来都是全新的。我的问题是,每当在Form1中调用clearSale方法时,它都会工作,但当在Form2中调用它时,就像我试图让它不发生任何变化一样,主页面上的内容会发生变化。就像这个方法几乎没有被调用一样。一切都保持不变,不会被清除。有什么帮助吗?如果要创建新的Form1对象,它将不会引用以前创建的对象。 通过构造函数参数将Form1传递给Form2 从Form1开始,您现在必须使用以下内容创建Form2: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中调用它时,就像我试图让它不发生任何变化一样,主页面上的内容
您正在实例化一个新的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);