Hen*_*ric 2 .net c# architecture winforms
我正在尝试修改使用多个表单的C#WinForms应用程序.启动时,将显示登录窗口.如果用户使用正确的用户名和密码组合登录,则具有三个不同选项卡的表单将显示为一种管理员视图.如果未提供密码或用户名,则会显示一个简化的GUI.它基本上由两个按钮组成,这两个按钮依次显示这两种形式,具体取决于按下哪个按钮:
按钮1:允许用户访问由多个文本框组成的表单,用户可以在其中输入将保存到数据库的信息.成功执行DB操作后,将再次显示带有两个按钮的第一个表单.
按钮2:显示一个表单,用户可以在其中输入将写入DB的代码.一旦数据库操作结束,用户将自动返回到具有两个按钮的原始表单.
两个表单还将有一个后退按钮,将用户带回第一个表单.我有很多逻辑,但我不确定如何最好地处理所涉及的所有形式.我应该在哪里实例化第一个(登录)表单?完成登录验证后,有两种可能的方法.显示选项卡式管理表单(如果用户名和密码正确)或带有两个大按钮的简化用户表单.还应该可以从管理表单注销,以便显示简化的GUI.
我希望我在这里有意义.我只需要一个很好的方法来处理它们之间的所有形式和导航.目前,实际上并不需要在它们之间传输数据,但是将来可能会出现问题,因此考虑到这一点的解决方案将非常出色.
我认为所需要的实际上是一个从一开始就处理表单显示和处理的类,但是我不太确定应该在哪里放置这个处理类的实例.
我刚做了类似的事.我有一组表格作为规则称为"页面"来管理.我也有严格的页面流程比你的更复杂.我会告诉你.
我将每个交互"页面"设计为UserControl,并创建了"OuterForm"和"Controller".控制器有一个Navigate(字符串pageName)方法,外部表单包含一个面板,并有一个显示(控制页面)方法,清除面板上的子项并添加替换.
我使用Spring.NET配置控制器和表单,并使用setter注入在两者之间创建双向链接.这意味着我的main方法可以向Spring请求表单,并使用Application.Run(form)显示它;
我创建了一个方便的方法来从事件处理程序访问控制器,并将执行例如Controller.Instance.Navigate(chosenPage); 控制器还使用Spring.NET为selectedPage加载正确的UserControl,然后在主窗体上调用Display()它加载的实例.任何用户控件都没有Spring.NET代码,也没有新的关键字;-)
我使用Spring.NET的优势在于我有一个表单类,它只监视一些业务逻辑并显示进度指示.我能够实现一次并配置该表单的许多实例注入了它将监视的不同业务逻辑.此外,我需要将接口绑定到特定于域的硬件和Web服务.最后我也将页面流量移动到了配置中.