2014-09-13 53 views
0

我在創建pdf之前需要設置一個需要設置的pdf文檔的類中擁有一定數量的屬性。這個類名爲generatePDF。我希望能夠使用表單更改屬性並保留屬性。使用不同類別的表格更改類別中的屬性

INotifyPropertyChanged在generatePDF類中實現。我使用了數據源配置嚮導(屏幕最右側的Open DataSources垂直選項卡,單擊左上角的圖標添加數據源)來綁定GeneratePDF類。現在在數據源窗口中,我可以看到所有屬性,並可以輕鬆地將它們拖到配置表單上。

我有generatePDF類中的方法,將初始值放入屬性。在顯示配置表單之前,我運行了這個方法。

當配置表單顯示時,我希望填充初始值的文本框是空的。當我輸入一個應該更改GeneratePDF實例中屬性的值時,該屬性不會更改。另外,控制會自動添加到配置表單中,這顯然允許用戶逐步瀏覽GeneratePDF類的不同實例 - 就像數據庫表中的行一樣。配置表單似乎沒有綁定到GeneratePDF類的單個實例。

我試圖改變GeneratePDF和靜態的所有屬性和方法,但是當它完成時,顯示錯誤「...不能在靜態類上實現INotifyPropertyChanged ...」。

我猜我不是第一個遇到這個問題,但我無法清楚地陳述我的問題,以便谷歌搜索會找到答案或教程。

我很感謝將特定類的實例綁定到配置表單。

回答

0

好的,我一直在努力研究這一整天,我想我已經找到了解決方案。

當我添加項目數據源GeneratePDF時,微軟稱這是什麼? 'GeneratePDFBindingSource'被添加到項目中。我繼續前進,並將這個班的所有屬性都吸收到配置表單中。

我將配置表單的構造函數修改爲GeneratePDF的實例作爲參數。

構造函數也被修改。在Initialize Component運行後,配置表單綁定源只是一個'typeOf'GeneratePDF。 GeneratePDFBindingSource的DataSource屬性已更新爲指向剛剛通過的實例。

但是,當顯示窗體時,值STILL顯示爲空白。我查看了配置的系統生成代碼,並注意到有一個EndEdit()方法可以在更改完成時調用。將它添加到構造函數中,並且它工作正常!

所以下面是幾行簡單的完成代碼。如果其他人發生這個問題,或者如果我在將來某個時候忘記了如何操作並需要參考,我會發布此答案。

namespace com.myCompany.myApp 
{ 
    public partial class frm_Configuration : Form 
    { 
     public frm_Configuration(GeneratePDF generatePdf) 
     { 
      InitializeComponent(); 
      GeneratePDFBindingSource.DataSource = generatePdf; 
      GeneratePDFBindingSource.EndEdit(); 
     } 
    } 
}