构建 c# 应用程序(CF .NET 3.5)的正确方法,我需要建议
本文关键字:方法 应用程序 CF NET 构建 | 更新日期: 2023-09-27 18:33:30
在过去的两年里,我为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; }
}