C#在一个表单上公开公共方法/属性,然后从另一个表单中调用它们

时间:2017-04-20 04:11:03

标签: c# forms winforms properties

以下是建议Rufus' Suggestion的帖子,但我似乎无法调用Formtoshowonclosing,因为我只收到空指针异常,我认为第一种形式是正确的,QR未被阅读?或者表格QR无法读取的方法?它没有抛出任何其他错误。

图例:表格A = QR,先加载,然后隐藏。表格B =帐户,接下来加载,用户选择数据库的条件。按下按钮,关闭帐户并显示QR,关闭时从帐户触发QR的方法并加载数据库。

这是我到目前为止所得到的,告诉我我似乎缺少的东西。

QR上的暴露属性:

    public string BUName { get; set; }
    public string DOCUName { get; set; }

on public void QR()

            InitializeComponent();
            this.Hide();
            Account AccountForms = new Account();
            AccountForms.FormToShowOnClose = this;
            AccountForm.ShowDialog();

LoadData(从Account中加载条件以准备Refresher(),这是[Table]中的标准Select *):

    public void LoadData()
    {
        txtBUnow.Text = BUName;
        txtDOCUnow.Text = DOCUName;
        if (BUName != "")
        {
            int BUtoQRConv = Convert.ToInt32(BUName);
            theDictionary = new DictionaryInit();
            DictionaryFindTable(BUtoQRConv, theDictionary.BUtoQRs);
            Refresher();
        }
    }

帐户表单:

    public static string passedBU;
    public static string passedDOCU;
    public QueryRefiner FormToShowOnClose { get; set; }

按下按钮:

        passedBU = lblBUitem.Text;
        passedDOCU = lblDOCUitem.Text;
        this.Close();

表格关闭:

    private void Account_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (FormToShowOnClose != null)
        {
        Console.WriteLine(passedBU + "!");
        FormToShowOnClose.BUName = passedBU;
        FormToShowOnClose.DOCUName = passedDOCU;
        FormToShowOnClose.LoadData();
        FormToShowOnClose.Show();
        }
    }

就目前而言,没有编译器错误,当它运行时,if语句似乎没有触发,并且当从if语句中提取时,我确实在FormToShowonClose上遇到了一个nullpointer异常。 知道我在这里可能缺少什么吗?据我所知,QR已经初始化,只是隐藏了。

1 个答案:

答案 0 :(得分:1)

将此代码移动到QR表格的加载事件处理程序:

this.Hide();
Account AccountForms = new Account();
AccountForms.FormToShowOnClose = this;
AccountForm.ShowDialog();