标签: wizard

寻找使用WinForms和/或建议重新设计实现的精彩向导示例

免责声明:在这个问题标签页面中,对话实际上意味着同样的事情,抱歉.我的理由:我不确定最终产品应该是什么样子 - 一堆独立的窗户或者一体化.

我希望改进一个用WinForms烘焙的现有的,难以维护的向导.我需要尝试保持相同的外观和感觉,但我需要清理内部逻辑.共有5个对话框,所有这些对话框都在一个巨大的方法中一个接一个地显示(当然,单击"下一个"按钮之后).来回跳跃的方式是...... 5或6个标签和GOTO!

现在,这个向导是线性的,而不是树.从任何一个对话框/页面,您最多可以访问其他两个对话框/页面.想到了双重链接列表.现在有5 * 4 = 20潜在的状态转换,而只有2*1 + 3*2 = 8它们是有效的.我不必使用gotos.他们通常是邪恶的,在这种情况下他们是 - 很难维持这个...而我正在考虑增加另一个,第6页.为什么原因gotos为在那里是最有可能,因为1.0版正在制作时A)的时间压力,B)这是5年前,所以在当时可用的奇才最好的例子/教程可能不是很大.

现在,向导的大多数页面都要求用户输入.根据用户输入的内容呈现后续页面.如果用户在第3页上说并且决定将后退按钮一直指向1,并且没有更改任何内容,并且点击下一次两次,则状态不应该更改.但是,更改页面x上的内容通常会使页面x + 1上的内容无效.但是,有一些例外,因为页面x上的某些或所有设置可能依赖于页面x-1,x-2等,但页面x + 1,x + 2等不依赖于x一些x.

我希望到目前为止事情是清楚的.我们试图通过为他们默认一些东西来帮助用户.存储事物的方式也不是很好.该对话框具有读/写属性,从/向实际控件复制内容.然后,在主方法中,存在"超级存储",其保存每页的存储.因此,当用户完成页面x并接下来命中时,首先将内容从控件复制到类的本地存储中,然后将这些内容保存到超级存储的相应成员中.

没有使用(对话框/存储器)数组和索引.每个goto目标(标签)都有单独但类似的"创建和填充"逻辑.当页面不再显示时,对话框对象会被丢弃(它们不会被丢弃,但每次要显示它们时,它们都会被重新创建并重新填充.我不相信这是必要的,因为只有需要单个手柄,并且在显示和关闭之后,我相信它可以在相同的状态下再次显示,而不必重新填充控件.如果浪费内存是唯一的问题,我可能会让事情滑落,但事情不是很容易维护,所以我不妨解决这个问题.

我在想:

  1. 将对话框存储在集合中,例如数组,但最好是DLL,因为我只能向前移动1或向后移动1,或者只能移动我列出的两个选项中的一个(对于第一个和最后一个对话框).
  2. 实际上我的标签/页面都扩展了一个共同的抽象类(因为"next","back","exit"按钮,它们的行为对所有人都是通用的).
  3. 每个标签/页面/对话框(出于此问题的目的,同样令人困惑)将具有"指挥"类可见的只读属性.这些属性将来自控件中的值(信息的真正来源),有时属性会稍微按下这些值."指挥"的责任是抓住那些并将它们存放起来.当导体希望用一种方法填充对话框时(让我们称之为"种子").我在这里遇到一些困难,因为每种种子方法的参数都不同.我希望能够利用强类型,以及保持通用性.我怀疑应该给出一些东西.我可以将字典传递给每个种子方法,但感觉太像Pythonic,就像鸭子打字一样.如果我搞砸了,我不知道直到运行时间.此外,对于任何给定的页面,字典的打包和解包更好地始终匹配.这是你进来的地方.
  4. 全局存储可以是一个巨大的字典.我可以遵守规则,保持所有密钥不同,或者根据页面将其名称加上"p1_"到"p5_",只是为了确定.我确信其他方案也存在.拥有巨型字典在最后也很方便 - 用户输入组装的顺序无关紧要,只要它正确完成即可.我也可以拥有一台状态机...... 这也是我在设计中迷失的地方.如果我把东西放在字典中,我将不得不执行很多条件逻辑,例如:如果我在第2页,并且我进行了更改,那么我通常(可能有例外)需要制作旧的默认值任何页面3,4,5无效.根据它的丑陋程度,它可能不比现有的基于goto的设计好多少.

如您所见,有一些挑战.然而,我很有希望,因为通过良好的精灵设计思考是一个肯定是以前重新发明的轮子.也许你可以推荐一个开源的C#/ mono应用程序,它带有一个线性但非平凡的向导,这样我就可以看一下实现.哎呀,甚至Java/Swing也许适合我,只要向导本质上是相似的.WPF对我来说是另一个挑战,我不想有2个问题而不是1个问题.

让我知道你能想到什么.我应该保留这些东西但是尽可能多地清理其他部分吗?随意问的问题.谢谢,

-HG

c# oop wizard winforms

5
推荐指数
1
解决办法
1879
查看次数

从向导中取消VS2010项目创建

我在VS2010中为自定义模板创建了一个向导,它就像一个魅力.

但由于向导包含完成项目创建所需的表单,我觉得用户应该能够取消项目的创建.

所以我的问题是......

是否可以从实现IWizard的向导中取消创建项目/模板过程?

这些是我得到的事件.

public void BeforeOpeningFile(ProjectItem projectItem)

public void ProjectFinishedGenerating(Project project)

public void ProjectItemFinishedGenerating(ProjectItem projectItem)

public void RunFinished()

public void RunStarted(object automationObject,
        Dictionary<string, string> replacementsDictionary,
        WizardRunKind runKind, object[] customParams)

public bool ShouldAddProjectItem(string filePath)
Run Code Online (Sandbox Code Playgroud)

谢谢!

wizard visual-studio-2010 project-template visual-studio

5
推荐指数
1
解决办法
1992
查看次数

PrimeFaces的p:向导验证不起作用

我有p:wizard一些标签.在第一个选项卡中,用户选择一个值(t :selectOneRadio- 我正在使用Tomahawk).这是必需的价值.

如果用户未选择值,则不会转到下一个选项卡,但不会显示验证错误.嗯.

如果用户选择了一个值,则转到下一个选项卡,返回第一个选项卡并选择一个不同的值,它的行为就像这次没有选择任何值一样.(也没有验证错误,但无法调用第二个选项卡).

更糟糕的是:用户在第一个选项卡中选择一个值,转到第二个选项卡,尝试从那里调用一个操作......出现验证消息; 它就像在第一个选项卡中没有选择任何值一样.

这有什么解释吗?

UPDATE

PrimeFaces论坛中提出的解决方案为我工作.(将process ="@ this"添加到commandButton.)

validation jsf wizard primefaces

5
推荐指数
1
解决办法
1万
查看次数

无法将内容置于SWT向导帮助按钮后面

我创建了一个基于SWT的向导,它有自定义的帮助按钮.现在我想把一些内容放在后面,所以也许SWT浏览器会开放,并且会显示预定义的HTML Doc.但我没有任何线索在我的向导中访问帮助按钮的操作.任何的想法?

swt jface button wizard

5
推荐指数
1
解决办法
1433
查看次数

向导控件内的Gridview自定义分页在asp.net中无法正常工作

我有一个页面,可以选择客人.

此页面包含一个更新面板,在更新面板中有一个向导控件,在向导控件中有一个gridview(面板 - >更新面板 - >向导控件 - > gridview)

现在分页效果不好,我在互联网上搜索答案,但我找不到正确的答案.我使用自定义分页.

当我想更改页面编号(到第二页或最后一页)时,它工作正常.但是当我想选择一行或转到另一页时,gridview无法正常工作.当我在第二页或最后一页上选择A行时(其他页面不起作用),所选的guest(item)始终是第一页之一.当我想要更改到另一个页面(从第二页或最后一页)时,它不起作用并停留在所选页面上.

有没有办法解决这个问题?

部分代码:

               <asp:Panel ID="PnlRe" Style="display: none; ... >
    <asp:UpdatePanel ID="UpdtPnlDetail" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
        ...
        <asp:Wizard ID="wzd" runat="server" ... >
            ...
            <asp:WizardStep ID="WizardStep3" runat="server" Title="Naam">
                        ...
                           <asp:Gridview ID="Gridview1" runat="server" AutoGenerateColumns="False"
                               DataKeyNames="GastID,Versie" DataSourceID="odsGasten" EmptyDataText="...."
                               OnRowCommand="Gridview1_RowCommand" OnPageIndexChanging="Gridview1_PageIndexChanging"
                               OnPageSizeChanging="Gridview1_PageSizeChanging" OnSearching="Gridview1_Searching"
                               OnSorting="Gridview1_Sorting" OnRowDataBound="Gridview1_RowDataBound"
                               CausesValidation="False" meta:resourcekey="..." PagerType="Custom"
                               ShowFilter="True" ShowInsertRecord="True" ShowPageSizer="True" UseSubmitBehaviour="False">
                               <Columns>
                                   <asp:TemplateField ShowHeader="False" meta:resourcekey="...">
                                       <ItemTemplate>
                                           <asp:ImageButton runat="server" CommandName="Select" CausesValidation="False" SkinID="uprowbutton"
                                               ToolTip="..." ID="ImgBtnSelect" meta:resourcekey="...">
                                           </asp:ImageButton>
                                       </ItemTemplate>
                                   </asp:TemplateField>
                                   ... Boundfields ...
                               </Columns>
                           </asp:Gridview>
                        ...
                    </asp:WizardStep>
                    ... …
Run Code Online (Sandbox Code Playgroud)

asp.net paging gridview updatepanel wizard

5
推荐指数
1
解决办法
1118
查看次数

在Netbeans向导中使用JFrame而不是JDialog

我已经使用Netbeans向导框架构建了一个应用程序,如此此处所述.我的应用程序正常工作,但我遇到的问题是应用程序没有显示在Windows任务栏中.我很确定问题是Wizard Framework使用JDialog而不是JFrame,但我无法弄清楚是否可以更改它.

如果有人有这个框架的经验,请告诉我是否可以在任务栏中显示.

java swing netbeans wizard

5
推荐指数
1
解决办法
2369
查看次数

从OpenERP中的按钮启动向导

我正在尝试从OpenERP中的按钮调用的动作启动向导.我可以使用侧面菜单按钮启动向导,但每当我在按钮中使用动作时,我只会进行几次刷新,而不会打开新的表单.

该向导非常基本.这是代码:

wizard.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>


        <record id="view_res_partner_add_terminal_wizard" model="ir.ui.view">
            <field name="name">res.partner.terminal.form</field>
            <field name="model">res.partner.terminal</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="Add terminal">
                    <group colspan="4" >
                        <separator string="Select terminals to assign" colspan="4"/>
                        <field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/>
                        <newline/>
                    </group>
                    <separator string="" colspan="4" />
                    <group colspan="4" col="6">
                        <button  icon="gtk-cancel" special="cancel" string="Cancel"/>
                        <button  icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/>
                    </group>
               </form>
            </field>
        </record>

        <record id="action_res_partner_terminal" model="ir.actions.act_window">
            <field name="name">Assign Terminal</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">res.partner.terminal</field>
            <field name="src_model">res.partner</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
            <field name="view_id" ref="view_res_partner_add_terminal_wizard"/>
            <field name="target">new</field> …
Run Code Online (Sandbox Code Playgroud)

xml button wizard openerp

5
推荐指数
1
解决办法
6959
查看次数

如何在MVVM中绑定Xtending WPF Toolkit Wizard的CurrentPage?

我使用Xceed WPF Toolkit 的 Wizard Control构建了一个包含多个页面的向导,并且我需要程序知道当前活动的页面,以便能够确定必要的步骤。

我正在尝试绑定CurrentPage到 ViewModel,如下所示:

XAML:

<xctk:Wizard CurrentPage="{Binding CurrentStep, Mode=TwoWay}">
    <xctk:WizardPage Name="Import">
       ...
    </xctk:WizardPage>
       ...
</xctk:Wizard>
Run Code Online (Sandbox Code Playgroud)

视图模型:

public WizardPage CurrentStep { get; set; }
Run Code Online (Sandbox Code Playgroud)

问题是CurrentStep总是返回Null并且向导只显示一个空白页。

需要做什么才能CurrentPage使用 MVVM 返回活动向导页面?

c# wpf wizard mvvm wpftoolkit

5
推荐指数
1
解决办法
979
查看次数

将多步骤表单向导的第一步渲染为另一个控制器的show动作中的部分步骤

我想渲染多步形式的第一步@trade_wizard(它有自己的控制器WizardsController)作为部分内部ItemsController#show,但我不知道如何构建它而不将代码从一个控制器加倍到另一个控制器.

我正在渲染Item的显示页面中的第一步:

<%= render "/wizards/step1" %>
Run Code Online (Sandbox Code Playgroud)

@trade_wizard在实例化@trade的特殊模型中处理,然后从每个步骤连续继承验证:

module Wizard
  module Trade
    STEPS = %w(step1 step2 step3).freeze

    class Base
      include ActiveModel::Model
      attr_accessor :trade

      delegate *::Trade.attribute_names.map { |attr| [attr, "#{attr}="] }.flatten, to: :trade

      def initialize(trade_attributes)
        @trade = ::Trade.new(trade_attributes)
      end
    end

    class Step1 < Base
      validates :trade_requester_id, :trade_recipient_id, :wanted_item_id, presence: true
      validates :shares, numericality: { only_integer: true, greater_than_or_equal_to: 0, 
                  less_than_or_equal_to: :max_shares }

      def max_shares
        @trade.wanted_item.shares
      end

    end

    class Step2 < Step1
      validates :collateral_item_id, presence: true
    end

    class …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails wizard formwizard

5
推荐指数
1
解决办法
547
查看次数

仅使用 Inno Setup UI 作为自解压程序 - 无需安装

我对许多“标准”安装程序使用 Inno Setup,但对于此任务,我需要提取一堆临时文件,运行其中一个,然后删除它们并退出安装程序(不实际安装任何内容)。

基本上,我希望制作一个自解压器,而不是“安装程序”,并且追求通过 inno setup 获得最佳的用户体验。

我有以下代码,几乎可以正常工作:

[Files]
Source: "dist\*"; Flags: recursesubdirs ignoreversion dontcopy;
Run Code Online (Sandbox Code Playgroud)
[Files]
Source: "dist\*"; Flags: recursesubdirs ignoreversion dontcopy;
Run Code Online (Sandbox Code Playgroud)

问题是,我在这里能做的最好的事情就是显示一个消息框“请稍等一两分钟...”,用户单击[确定],然后等待,因为屏幕上根本没有任何内容,似乎什么也没有发生,然后MyScript.exe开始。

我想要的是一个向导页面,上面写着“请稍候,临时文件被提取...”,并带有npbstMarquee样式进度条,然后一旦文件被提取并且我的脚本启动,它就会消失。

我认为没有办法告诉 Inno Setup 在ExtractTemporaryFiles()运行时显示进度条(这将是理想的),并且将其放入自定义向导页面让我感到困惑。

inno-setup progress wizard

5
推荐指数
1
解决办法
2545
查看次数