在过去的两年里,我为 CF .NET 3.5 开发了可以在仓库的便携式设备(windows mobile)上运行的应用程序。从一开始我只是跳入这个过程并犯了很多我正在逐渐纠正的错误。出现的是以这种方式制作的应用程序:一个启动整个过程的主表单,它自动创建一个数据表单,它将一直保持活跃。此数据表单将保留用户将插入或从服务器请求的所有数据。其他形式基本上是数据视图以及操作它们的方法。
它有效,但......我这样做的方式是否正确?或者,也许我错过了一些真正基本的东西?
在过去的两年里,我为 CF .NET 3.5 开发了可以在仓库的便携式设备(windows mobile)上运行的应用程序。从一开始我只是跳入这个过程并犯了很多我正在逐渐纠正的错误。出现的是以这种方式制作的应用程序:一个启动整个过程的主表单,它自动创建一个数据表单,它将一直保持活跃。此数据表单将保留用户将插入或从服务器请求的所有数据。其他形式基本上是数据视图以及操作它们的方法。
它有效,但......我这样做的方式是否正确?或者,也许我错过了一些真正基本的东西?
因此,您创建了一个数据表单,并且像 RAM 一样使用它。您永远不会显示数据,您只需将其存储在那里以供访问。
如果有人不得不接管你的工作(比如你离开公司或死去),他们会非常恨你。
更好的技术是创建一个包含所有这些数据的类。
好消息是,既然您已经有了一个数据表单,您可能已经知道一切是如何组织的!
现在,只需使用您的数据知识来创建您可以读写的类。
如果您有类似项目的组,请创建您的主类将包含的其他类。
如果您有几个类似的项目,请创建这些项目的可公开访问的列表。
让它变得像你想要的那样简单或复杂!
考虑这些类,它们都足够通用,可以修改,但是您需要并演示添加的一些额外内容:
public class DataForm {
private GroupedItem m_item2;
public event EventHandler Item2Changed;
public DataForm() { // this is your constructor
Item1 = new GroupedItem();
Item2 = new GroupedItem();
ItemCollection = new GroupCollectionItems("Group1");
}
public float Value1 { get; set; }
public float Value2 { get; set; }
public GroupedItem Item1 { get; set; }
public GroupedItem Item2 {
get { return m_item2; }
set {
if (m_item2 != value) {
m_item2 = value;
if (Item2Changed != null) {
Item2Changed(this, EventArgs.Empty); // notify whoever is listening for the change
}
}
}
}
public GroupCollectionItems ItemCollection { get; set; }
}
public class GroupedItem {
public GroupedItem() { // this is your constructor
}
public string Name { get; set; }
public object Value { get; set; }
}
public class GroupCollectionItem {
private GroupCollectionItem() { // this is your constructor
}
public static GroupCollectionItem Create(string groupName, string itemName, object itemValue) {
var item = new GroupCollectionItem() {
Group = groupName,
Name = itemName,
Value = itemValue
};
return item;
}
public string Group { get; private set; }
public string Name { get; private set; }
public object Value { get; set; }
}
public class GroupCollectionItems : List<GroupCollectionItem> {
public GroupCollectionItems(string name) { // this is your constructor
Name = name;
}
public string Name { get; private set; }
}