C#将值从一个表单传递到另一个表单

时间:2011-07-18 09:08:31

标签: c# visual-studio-2010

我正在学习C#编程语言,正在为SAP Business One制作一个Payroll程序插件。我有两种形式,我想将PayrollFormulaBuilder.cs中的值传递给EarnDeductSetup.cs。

用户使用PayrollFormulaBuilder生成公式并保存为字符串。用户单击EarnDeductSetup表单上的计算器按钮以打开PayrollFormulaBuilder表单。 EarnDeductSetup表单仍处于打开状态,但在后台。我希望只要用户点击PayrollFormulaBuilder表单上的“应用”按钮,生成的公式就会显示在我的EarnDeductSetup表单上(我有一个文本框,txt_formula_template.Text)。我也希望这个PayrollFormulaBuilder表单在按下应用按钮后立即关闭。

目前,我无法在我的EarnDeductSetup表格中显示生成的公式

我的代码:(EarnDeductSetupForm)

namespace EIM_Payroll_Application
{
    public partial class EarnDeductSetupForm : Form
    {
        private SAPbobsCOM.Company company;

        public string SAPCodePD { get; set; }

        public EarnDeductSetupForm(SAPbobsCOM.Company co)
        {
            InitializeComponent();
            this.company = co;
        }

...

private void btn_calculator_Click(object sender, EventArgs e)
        {
            PayrollFormulaBuilder PC = new PayrollFormulaBuilder();
            PC.ShowDialog();
        }

...

    if (rb_calculated_amt.Checked == true)
    {
        txt_formula_template.Text = SAPUtility._formulaVariable;

        formulaTemplate = txt_formula_template.Text;
    }

SAPUtility.cs

namespace Payroll.Util.Helpers
{
    public static class SAPUtility
    {
        public static string _formulaVariable = String.Empty;

        public static string variable
        {
            get { return _formulaVariable; }
            set { _formulaVariable = value; }
        }

...

PayrollFormulaBuilder.cs

private void btnApply_Click(object sender, EventArgs e)
{
    SAPUtility._formulaVariable = formula_display.Text;

    this.Close();

    EarnDeductSetupForm.ActiveForm.ShowDialog();
}

我的问题是,如果用户在PayrollFormulaBuilder表单上按下应用,如何在我的EarnDeductSetupForm上的txt_formula_template.Text文本框中显示此公式?

2 个答案:

答案 0 :(得分:0)

将父窗体中的按钮设置为internal,然后使用对话框中的parent或parentform属性来访问它,方法是将其转换为类型的父窗口(这应该使用intellisense公开内部按钮)。使用“this”作为参数调用ShowDialog(无引号)。

在子对话框中订阅父表单内部按钮上的事件。并在事件处理程序中执行您的操作。

答案 1 :(得分:0)