0

在过去的两年里,我为 CF .NET 3.5 开发了可以在仓库的便携式设备(windows mobile)上运行的应用程序。从一开始我只是跳入这个过程并犯了很多我正在逐渐纠正的错误。出现的是以这种方式制作的应用程序:一个启动整个过程的主表单,它自动创建一个数据表单,它将一直保持活跃。此数据表单将保留用户将插入或从服务器请求的所有数据。其他形式基本上是数据视图以及操作它们的方法。

它有效,但......我这样做的方式是否正确?或者,也许我错过了一些真正基本的东西?

4

1 回答 1

2

因此,您创建了一个数据表单,并且像 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; }

}
于 2013-10-02T21:13:26.453 回答