我有一个非常的简单窗口表单,用户使用它来管理“存储”。
每个存储区都有一个名称和编号,并保存在相应的DB表中。
该窗体具有存储列表框、创建新存储的“添加”按钮、“删除”按钮和“编辑”按钮。
除了这些,我有文本框的名称和号码,并保存/取消按钮。
当用户从列表框中选择存储并单击“编辑”时,文本框将被填充,保存/取消将变为活动。当用户单击“add”时,我创建一个新的Store,将其添加到列表框中,激活文本框并保存/取消按钮,然后当用户单击“save”时将其提交到数据库,或者在用户单击“cancel”时丢弃它。
现在,我的事件系统看起来像这样(在psuedo代码中)。这样就更短了。)
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不是很有经验,所以我不确定我是否对如何解决这个问题有正确的想法。
有更好的方法吗?我想保持它简单,但可用。
发布于 2010-06-03 04:26:06
在您的情况下,您可能需要考虑的不仅仅是将一个简单的字符串存储到列表框中。您有列表框值表示的域对象吗?将它们添加到列表框中--确保覆盖.ToString(),以便列表框最终可视化有意义的东西。当用户选择Add时,创建一个新的域对象并将it添加到列表框中,确保将适当的属性设置为将其标记为插入到数据库的新记录。相反,持久化到数据库的任何记录以及从数据库获取的所有现有记录都可以被适当标记,以便您可以处理任何必要的编辑和删除。
https://stackoverflow.com/questions/2962736
复制相似问题