首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于简单Windows窗体的通知

关于简单Windows窗体的通知
EN

Stack Overflow用户
提问于 2010-06-03 01:08:24
回答 5查看 226关注 0票数 0

我有一个非常的简单窗口表单,用户使用它来管理“存储”。

每个存储区都有一个名称和编号,并保存在相应的DB表中。

该窗体具有存储列表框、创建新存储的“添加”按钮、“删除”按钮和“编辑”按钮。

除了这些,我有文本框的名称和号码,并保存/取消按钮。

当用户从列表框中选择存储并单击“编辑”时,文本框将被填充,保存/取消将变为活动。当用户单击“add”时,我创建一个新的Store,将其添加到列表框中,激活文本框并保存/取消按钮,然后当用户单击“save”时将其提交到数据库,或者在用户单击“cancel”时丢弃它。

现在,我的事件系统看起来像这样(在psuedo代码中)。这样就更短了。)

代码语言:javascript
复制
add->click:
    store = new Store()
    listbox.add(store)
    populateAndEdit(store)

delete->click:
    store = listbox.selectedItem
    db.deleteOnSubmit(store)
    listbox.remove(store)
    db.submit()

edit->click:
    populateAndEdit(listbox.selectedItem)

save->click:
    parseAndSave(listbox.selectedItem)
    db.submit()
    disableTexts()

cancel->click:
    disableTexts()

问题在于我如何确定我们是插入一个新的商店,还是更新一个现有的商店。

对我来说,最明显的解决方案是让它成为一个“模式”过程--也就是说,当我单击“编辑”时,我进入了编辑模式,而“保存”按钮所做的事情与在“添加”模式下做的事情不同。

我知道我可以让它更像MVC,但我并不认为这个简单的表单值得增加复杂性。我对winforms不是很有经验,所以我不确定我是否对如何解决这个问题有正确的想法。

有更好的方法吗?我想保持它简单,但可用。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-03 01:16:03

你肯定在数据库里有某种身份?例如,您的对象将将此主键公开为StoreID或ID属性。如果它是GUID,它将是一个新对象的Guid.Empty,如果它是一个自动递增的整数,它将是零。当您将它保存到数据库中时,它应该得到一个有效的ID,然后您可以很容易地判断该对象是新的还是现有的。

票数 3
EN

Stack Overflow用户

发布于 2010-06-03 01:10:25

使用某种类型的标识符,即存储的名称。现在,当用户按Save时,请检查您的商店集合是否已经包含同名的存储集。如果是的话,这是一个更新,否则它就是一个新的商店。

我意识到使用商店的名称对你来说是不可能的(例如,一家有很多分店的超市),但是你明白了。

票数 6
EN

Stack Overflow用户

发布于 2010-06-03 01:28:50

您可以检查前面提到的某种唯一标识符,或者在我的公司使用的框架(CSLA .NET)中,我们的对象上有一个布尔IsNew字段,当我们创建一个新对象时,该字段被标记为true。当数据从数据库中读取到对象时,IsNew字段被标记为false。这使您能够在所有情况下使用默认的新构造函数,然后在填充现有项时将其标记为false。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2962736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档