使用其他类的窗体更改类中的属性
本文关键字:属性 窗体 其他 | 更新日期: 2023-09-27 18:21:49
我在一个创建pdf文档的类中有许多属性,这些属性需要在创建pdf之前进行设置。这个类被命名为generatePDF。我希望能够使用窗体更改属性并持久化这些属性。
INotifyPropertyChanged是在generatePDF类中实现的。我使用数据源配置向导(在屏幕最右侧的"打开数据源"垂直选项卡,单击左上角的图标添加数据源)来绑定GeneratePDF类。现在,在数据源窗口中,我可以看到所有属性,并可以轻松地将它们拖到配置表单上
我在generatePDF类中有一个方法,它将初始值放入属性中。我在显示配置表单之前运行了这个方法。
当显示配置表单时,我希望用初始值填充的文本框为空。当我在GeneratePDF实例中输入一个应该更改属性的值时,该属性不会更改。此外,还有一个自动添加到配置表单中的控件,它显然允许用户遍历GeneratePDF类的不同实例,比如数据库表中的行。配置表单似乎没有绑定到GeneratePDF类的单个实例。
我试图将GeneratePDF以及的所有属性和方法更改为静态,但完成后显示错误"…无法在静态类上实现INotifyPropertyChanged…"。
我想我不是第一个遇到这个问题的人,但我无法足够清楚地陈述我的问题,以便在谷歌搜索中找到答案或教程。
我很乐意帮助将类的特定实例绑定到配置表单。
好吧,我已经为此工作了一整天,我想我已经找到了解决方案。
当我添加项目数据源GeneratePDF时??微软称之为什么GeneratePDFIndingSource"已添加到项目中。我继续把这个类的所有属性都写在一个配置表上
我将配置表单的构造函数修改为GeneratePDF实例作为参数。
构造函数也会被修改。Initialize Component运行后,配置表单绑定源只是一个"typeOf"GeneratePDF。GeneratePDFIndingSource的DataSource属性已更新,指向我刚刚传入的实例。
然而,当显示表单时,值仍然显示为空白。我查看了系统为配置生成的代码,注意到有一个EndEdit()方法可以在更改完成时调用。正在将其添加到构造函数和。。。成功了!
下面是完成代码的几行简单代码。我会发布这个答案,以防其他人遇到这个问题,或者如果我在未来的某个时候忘记了如何做到这一点,需要参考。
namespace com.myCompany.myApp
{
public partial class frm_Configuration : Form
{
public frm_Configuration(GeneratePDF generatePdf)
{
InitializeComponent();
GeneratePDFBindingSource.DataSource = generatePdf;
GeneratePDFBindingSource.EndEdit();
}
}
}