【问题标题】:Change properties in a class using a form from a different class使用来自不同类的表单更改类中的属性
【发布时间】:2014-09-13 17:49:40
【问题描述】:

我在创建 pdf 文档的类中有许多属性,需要在创建 pdf 之前对其进行设置。这个类被命名为generatePDF。我希望能够使用表单更改属性并保留属性。

INotifyPropertyChanged 在 generatePDF 类中实现。我使用数据源配置向导(打开屏幕最右侧的 DataSources 垂直选项卡,单击左上角图标添加数据源)绑定 GeneratePDF 类。现在在 Datasources 窗口中,我可以看到所有属性,并且可以轻松地将它们拖到配置表单中。

我在 generatePDF 类中有一个将初始值放入属性的方法。我在显示配置表单之前运行了这个方法。

当显示配置表单时,我希望填充初始值的文本框是空白的。当我在我的 GeneratePDF 实例中输入一个应该更改属性的值时,该属性不会更改。此外,配置表单中自动添加了一个控件,这显然允许用户逐步浏览 GeneratePDF 类的不同实例——就像数据库表中的行一样。配置表单似乎没有绑定到 GeneratePDF 类的单个实例。

我尝试将 GeneratePDF 以及所有属性和方法更改为静态,但是当完成并显示错误“...无法在静态类上实现 INotifyPropertyChanged...”。

我猜我不是第一个遇到这个问题的人,但我无法清楚地说明我的问题,以便谷歌搜索可以找到答案或教程。

如果能帮助我将类的特定实例绑定到配置表单,我将不胜感激。

【问题讨论】:

    标签: c# .net data-binding inotifypropertychanged


    【解决方案1】:

    好的,我整天都在研究这个问题,我想我已经找到了解决方案。

    当我添加项目数据源 GeneratePDF 时,一个??微软称它为什么? “GeneratePDFBindingSource”已添加到项目中。我继续将此类中的所有属性添加到配置表单中。

    我将配置表单的构造函数修改为GeneratePDF的实例作为参数。

    构造函数也被修改。 Initialize Component 运行后,配置表单绑定源只是一个 'typeOf' GeneratePDF。 GeneratePDFBindingSource 的 DataSource 属性已更新为指向我刚刚传入的实例。

    但是,当显示表单时,值仍然显示为空白。我查看了系统生成的配置代码,注意到有一个 EndEdit() 方法可以在更改完成时调用。将它添加到构造函数中,然后......它起作用了!

    下面是几行简单的完成代码。我发布此答案以防其他人遇到此问题,或者如果我在未来某个时间忘记如何执行此操作并需要参考。

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

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 2018-10-20
      • 2016-03-18
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      相关资源
      最近更新 更多