C# 在类中使用封闭形式中的值

C# 在类中使用封闭形式中的值,c#,winforms,oop,C#,Winforms,Oop,我试图从一个将被关闭的表单中获取一些字符串变量的值。表单用于从用户处获取公司信息。这些值将在类中用于创建pdf。我已经尝试了很多事情,但我没有做到,因为我认为我在完全理解OOP方面有问题。这是我的审判: 在待关闭的表格中: MyClass MyCls = new MyClass(); private void FrmCompanyInfo_FormClosed(object sender, FormClosedEventArgs e) { MyCls.AssignVal

我试图从一个将被关闭的表单中获取一些字符串变量的值。表单用于从用户处获取公司信息。这些值将在类中用于创建pdf。我已经尝试了很多事情,但我没有做到,因为我认为我在完全理解OOP方面有问题。这是我的审判:

在待关闭的表格中:

MyClass MyCls = new MyClass();

private void FrmCompanyInfo_FormClosed(object sender, FormClosedEventArgs e)
    {
        MyCls.AssignValues(LogoFileName_, CompanyName_, CompanyAddress_);
    }
LogoFileName、CompanyName、CompanyAddress是保存文本框中值的字符串

这是我课堂的一部分:

public class MyClass
{

    private string LogoFileName { get; set; }
    private string CompanyName { get; set; }
    private string CompanyAddress { get; set; }

    public void AssignValues(string LFN, string CN, string CA)
    {
        LogoFileName = LFN;
        CompanyName = CN;
        CompanyAddress = CA;
    }

            if (LogoFileName != null)
            {
               //it goes...
关闭表单后,类中的变量变为null。例如,上面的if条件不满足


你能指出我的错误,或者给我一个更好的建议吗

您应该在Form.Closing事件中执行此操作,而不是在Form.Closed中执行此操作

编辑:有关如何执行此操作的更多详细信息,请参阅。您不应该在关闭的窗体上声明对象,而是在调用窗体上。

参见:如果您的表单意在填充一个实例:“代码> COPMANYNEFION/CODE >,您可能需要考虑这样的模式:

public partial class CompanyInfoForm
{
    public static CompanyInfo ShowEditCompany()
    {
        var form = new CompanyInfoForm();
        form.ShowDialog();      
        return form.EditingCompany;
    }
}
其中,
EditingCompany
可能是通过读取相应的
文本框
值构建的属性。然后,您可以重用该表单:

var companyInfo = CompanyInfoForm.ShowEditCompany();

谢谢你,但是很抱歉,我没有得到你的解决方案,链接上也没有。它对你来说是非常清晰的。“public static CompanyInfo ShowEditCompany()”的用途是什么。我不明白为什么要使用“form.ShowDialog()”。