首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVP调用表单

MVP调用表单
EN

Stack Overflow用户
提问于 2013-12-04 22:26:51
回答 1查看 1.6K关注 0票数 2

我尝试在ModelViewPresenter应用程序中实现WinForms (MVP)模式。我有一个带有按钮的主表单,当我点击这个按钮时,会显示一个新的表单。遵循MVP模式的最佳方法是什么?我想,我应该从我的推荐人那里打开第二张表格,这样这个视图就不知道其他观点了。但我不确定。我的应用程序只有三个对话框。最好的方法是什么?

代码

代码语言:javascript
复制
        private void LoadAndShowMasterTrackForm()
    {
        if (GvClaims.SelectedRowsCount < 1)
            return;

        // Create an empty list.
        var rowsToUpdate = new List<TrackData>();
        // Add the selected rows to the list.
        for (int i = 0; i < GvClaims.SelectedRowsCount; i++)
        {
            if (GvClaims.GetSelectedRows()[i] >= 0)
            {
                var track = GvClaims.GetRow(GvClaims.GetSelectedRows()[i]) as TrackData;
                if (track != null)
                    rowsToUpdate.Add(track);
            }
        }
        using (var uow = new UnitOfWork())
        {
            try
            {
                GvClaims.BeginUpdate();
                var frmSynonyms = new MasterTrackDialog { DataSourceMainGridView = rowsToUpdate, DataSource = rowsToUpdate, SessionUow = uow };
                var result = frmSynonyms.ShowDialog(this);
                if (result == DialogResult.Cancel)
                    uow.RollbackTransaction();
            }
            catch (Exception ex)
            {
                uow.RollbackTransaction();
                Logger.Error(ex.Message, ex);
            }
            finally
            {
                GcClaims.RefreshDataSource();
                GvClaims.EndUpdate();
            }
        }

    }

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-04 22:53:16

在MVP视图中拥有演示者,而不是相反。演示者是关于表示逻辑的,而不是关于应该打开哪个视图和如何打开的。

因此,不能(不应该)在演示文者中实例化和打开视图。

请这样看:演示者通常只有对view接口的引用,因此您可能有一个控制台视图和一个winform视图。因此,主持人没有责任知道哪种类型的观点目前是“在线”的,以及如何划分一个。

演示者所能做的就是命令一个视图来做某事。例如,它可以调用view.ConfirmOperation(),现在取决于视图如何在UI中完成它。控制台视图可以在命令行中提示符,而winforms视图可以打开对话框。

这里的重要部分是,演示者不会在对话框等方面“思考”,而是在业务逻辑方面“思考”(操作需要确认,等等)。

希望能帮上忙。

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

https://stackoverflow.com/questions/20387414

复制
相关文章

相似问题

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