【问题标题】:Calling methods in Other forms C# Winforms以其他形式调用方法 C# Winforms
【发布时间】:2017-06-01 19:28:48
【问题描述】:

我正在使用 C# WinForms 应用程序制作一个 POS 系统,并且有一个 Form1(主屏幕)和一个 Checkout 屏幕(可以认为是 Form2)。在Form1 中有一个方法叫做clearSale()。我正在尝试通过Form2 中的此按钮事件调用它:

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();
}

在此事件完成后,它会从 Form1 调用 clearSale() 方法:

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;
}

clearSale() 方法几乎只是将所有 txtboxes 设置回空状态,并使所有内容再次焕然一新。我的问题是,每当在Form1 中调用clearSale() 方法时,它都会起作用,但是当在Form2 中调用它时(就像我试图让它那样),我的主页上没有任何变化。就像该方法几乎没有被调用一样。一切都保持不变,不会被清除。有什么帮助吗?

【问题讨论】:

  • 您正在实例化一个新的Form1,而不是使用正在显示的Form1 的实例
  • 谷歌你的问题标题。您会发现数百个相同的问题和答案。

标签: c# database winforms linq methods


【解决方案1】:

如果您正在创建一个新的Form1 对象,它将不会引用之前创建的对象。 通过构造函数参数将Form1 传递给Form2

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();
    }
}

您现在必须从Form1 创建Form2

Form2 checkout = new Form2(this);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多