2014-02-12 19 views
0

我試圖從將被關閉的窗體中獲取一些字符串變量的值。表單用於從用戶獲取公司信息。這些值將用於創建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... 

關閉表格後,在類中的變量變得無效。例如,上面的if條件不滿足。

請你指出我的錯誤,還是建議我一個更好的主意?

回答

0

你應該在Form.Closing事件而不是Form.Closed中這樣做。

編輯:有關如何做到這一點的更多細節,請參閱this answer and question。您不應該在關閉的表單上聲明對象,而應該在調用表單上聲明該對象。

+0

我試過了,沒有工作。 – Siha

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(); 
+0

謝謝,但對不起,我沒有得到您的解決方案,既沒有在鏈接上。它可以清楚地爲你。 '公共靜態CompanyInfo ShowEditCompany()'的目的是什麼。我不明白爲什麼我應該使用'form.ShowDialog()'。 – Siha