我正在尝试从将要关闭的表单中获取字符串变量的某些值。表单用于从用户获取公司信息。这些值将在类中用于创建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条件不满足。
你能指出我的错误,还是建议我一个更好的主意?
答案 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();