VB.net:是否可以引用表单类之外的表单元素?
我目前正在编写我的第一个非平凡的VB.net程序(因此我来自一个相对无知的位置)。该程序从数据库中获取数据(根据用户输入字段),并根据该数据绘制各种绘图 我决定以最直观的方式将代码分解成类/文件。UI方法在form类中(基本上所有响应各种控件中用户输入的事件处理程序),DB stuff在其自己的类和文件中,用于在表单上绘制绘图的方法也在其自己的类/文件中划分 我面临的问题是DB类引用form类的各种元素。例如,其中一个DB方法用于填充form类中的combobox。但它显然不能这样做,因为它没有访问权限 因此,我的问题如下:VB.net:是否可以引用表单类之外的表单元素?,vb.net,forms,Vb.net,Forms,我目前正在编写我的第一个非平凡的VB.net程序(因此我来自一个相对无知的位置)。该程序从数据库中获取数据(根据用户输入字段),并根据该数据绘制各种绘图 我决定以最直观的方式将代码分解成类/文件。UI方法在form类中(基本上所有响应各种控件中用户输入的事件处理程序),DB stuff在其自己的类和文件中,用于在表单上绘制绘图的方法也在其自己的类/文件中划分 我面临的问题是DB类引用form类的各种元素。例如,其中一个DB方法用于填充form类中的combobox。但它显然不能这样做,因为它没有
- 我是否可以在表单类之外访问表单控件
- 如果是,这是否一种良好的做法
- 或者,让单独的共享变量“隐藏”我需要访问的字段,并将任何修改字段内容的方法(例如,将项添加到组合框)限制在表单类本身,这样会更好吗
提前感谢。您可以通过将表单控件的访问修饰符更改为
Public
来访问表单控件。也许这不是最好的实践,但如果你愿意,你可以这样做
最好让窗体启动一个事件处理程序,然后调用DB类来获取所需的数据,然后在窗体类中调用另一个方法来绘制绘图。在我看来,如果这些方法所做的唯一事情就是在表单上绘图,那么就没有理由将它们抽象到其他类。可以通过将表单控件的访问修饰符更改为
Public
来访问表单控件。也许这不是最好的实践,但如果你愿意,你可以这样做
最好让窗体启动一个事件处理程序,然后调用DB类来获取所需的数据,然后在窗体类中调用另一个方法来绘制绘图。在我看来,如果这些方法所做的唯一一件事就是在表单上绘图,那么就没有理由将它们抽象到其他类。虽然您可以传递一个可从其他对象访问的控件对象,一般来说,你不必这么做,我个人认为这是一种不寻常的做法,除非有一个令人信服的理由。在你的问题中,你可以选择1和3。您希望尽一切可能将数据从GUI中分离出来。如果您的应用程序由不同技能的人员组成,并且/或者您希望扩展/重用应用程序组件和/或者您希望简化维护,则这一点尤其正确 您需要了解以下概念:
- 层和层(UI/DAL/BLL/DB等)-参见:
- DTO(数据传输对象)-这将回答数据如何在层/层之间移动。Dot Net提供了许多数据结构,允许您执行此操作,例如,通用列表、数据表、数据集、ArrayList、XML等。请参阅:
- 绑定概念-控件如何与数据结构关联
有大量的参考文献讨论上述概念。尝试从GEGO中尽可能正确地获得体系结构是非常重要的。 < P>虽然你可以从其他对象中访问一个控制对象,但一般来说,你不必这么做,除非有一个令人信服的理由,否则我个人认为这是一种不寻常的做法。在你的问题中,选项1和3是这样的。您希望尽一切可能将数据从GUI中分离出来。如果您的应用程序由不同技能的人员组成,并且/或者您希望扩展/重用应用程序组件和/或者您希望简化维护,则这一点尤其正确 您需要了解以下概念:
- 层和层(UI/DAL/BLL/DB等)-参见:
- DTO(数据传输对象)-这将回答数据如何在层/层之间移动。Dot Net提供了许多数据结构,允许您执行此操作,例如,通用列表、数据表、数据集、ArrayList、XML等。请参阅:
- 绑定概念-控件如何与数据结构关联