我有一个非常简单的窗体,用户用来管理"商店".
每个商店都有一个名称和编号,并保存在相应的数据库表中.
表单有一个商店列表框,一个创建新商店的添加按钮,一个删除按钮和一个编辑按钮.
除了那些我有文字框的名称和数字,以及保存/取消按钮.
当用户从列表框中选择商店并单击"编辑"时,文本框将变为填充状态,保存/取消将变为活动状态.当用户点击"添加"时,我创建一个新的商店,将其添加到列表框,激活文本框和保存/取消按钮,然后在用户点击"保存"时将其提交到数据库,或者在用户点击时将其丢弃'取消'.
现在,我的事件系统看起来像这样(在psuedo-code中.它只是那么短.)
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()
Run Code Online (Sandbox Code Playgroud)
问题在于我如何确定我们是在插入新商店还是更新现有商店.
对我来说显而易见的解决方案是使其成为一个"模态"过程 - 也就是说,当我单击编辑时,我进入编辑模式,并且保存按钮的工作方式与我处于添加模式时不同.
我知道我可以使它更像MVC,但我并不认为这种简单的形式值得增加复杂性.我对winforms不是很有经验,所以我不确定我是否有正确的想法来解决这个问题.
有一个更好的方法吗?我想保持简单,但可用.
使用某种类型的标识符,即商店的名称.现在,当用户按下"保存"时,请检查您的商店集合是否已包含具有相同名称的商店.如果是的话,它是一个更新,否则它是一个新的商店.
我意识到你可能无法使用商店的名称(即有许多分店的超市),但你明白了.