我完全是一个业余爱好者,正在编写一个小应用程序来跟踪文件夹中的变化。我想我将在绑定到网格视图的一个数据表中保存有关要观看的目录的信息,当用户单击按钮时,程序将创建 FileSystemWatchers 来关注目录,他们会将事件消息发送到另一个数据表绑定到另一个gridview。在广阔的 OOP 世界中,我应该在哪里声明、启动和操作数据表?主窗体,在主窗体中,在一个类中,还是我应该“放弃”并使用 Visual Studio 自动创建一个 DataSet 并在其中粘贴两个表?
2 回答
好马的课程。对于一个小的实用程序应用程序,使用 VS“Visual/RAD”编程风格可能会更好。例如,将表格等拖放到表单上,就像大多数教程显示的那样。
严格来说,对于更大的应用程序,更正确的方法是制作一个单独的程序集(.dll)来处理数据访问,然后从主窗体调用该程序集中的类。这个概念有许多术语,但实际上你想分离你的关注点。换句话说,让 UI 处理 UI 交互,有一个单独的程序集/项目/处理数据库交互的任何东西,以及另一个单独的程序集/项目/处理业务逻辑等的东西。
最后几句话对不同的人可能意味着不同的事情,并且没有 100% 正确的做事方式。
一些可能有帮助的文章:
我同意 KiwiBastard 的观点:使用 VS 工具生成类型化的 DataSet 会给您带来很多好处。
不过,这只会生成类。您仍然必须管理 DataSet 的一个实例。对于一个非常简单的应用程序,我没有将 UI 和业务逻辑分解到不同的类中,我会在 Form.xml 中执行此操作。对于任何复杂的应用程序,它都是业务逻辑类的一部分。
可能会为您省去很多麻烦的事情:数据绑定很好,ADO 也很好,但是某些类型的 ADO 代码(特别是 DataTable 上的事件处理程序)不能很好地与数据绑定配合使用。如果您正在使用 BindingSources(实际上,您应该使用),那么当您以编程方式操作 DataSet 的对象时(例如,当您添加和删除行时),暂停绑定通常是一个好主意。暂停和恢复绑定的成本非常小,它消除了一整类极难诊断的问题。