2014-09-13 34 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(); 
     } 
    } 
}