使用类中封闭形式的值

时间:2014-02-12 09:05:03

标签: c# winforms oop

我正在尝试从将要关闭的表单中获取字符串变量的某些值。表单用于从用户获取公司信息。这些值将在类中用于创建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条件不满足。

你能指出我的错误,还是建议我一个更好的主意?

2 个答案:

答案 0 :(得分:0)

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

编辑:有关如何执行此操作的详细信息,请参阅this answer and question。您不应该在关闭的表单上声明对象,而是在调用表单上声明。

答案 1 :(得分:0)

请参阅this answer:如果您的表单是为了填充CopmanyInfo的实例,您可能需要考虑这样的模式:

public partial class CompanyInfoForm
{
    public static CompanyInfo ShowEditCompany()
    {
        var form = new CompanyInfoForm();
        form.ShowDialog();      
        return form.EditingCompany;
    }
}

EditingCompany可以是通过读取相应的TextBox值构建的属性。然后您可以重复使用表单:

var companyInfo = CompanyInfoForm.ShowEditCompany();