免责声明:在这个问题标签页面中,对话实际上意味着同样的事情,抱歉.我的理由:我不确定最终产品应该是什么样子 - 一堆独立的窗户或者一体化.
我希望改进一个用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目标(标签)都有单独但类似的"创建和填充"逻辑.当页面不再显示时,对话框对象会被丢弃(它们不会被丢弃,但每次要显示它们时,它们都会被重新创建并重新填充.我不相信这是必要的,因为只有需要单个手柄,并且在显示和关闭之后,我相信它可以在相同的状态下再次显示,而不必重新填充控件.如果浪费内存是唯一的问题,我可能会让事情滑落,但事情不是很容易维护,所以我不妨解决这个问题.
我在想:
如您所见,有一些挑战.然而,我很有希望,因为通过良好的精灵设计思考是一个肯定是以前重新发明的轮子.也许你可以推荐一个开源的C#/ mono应用程序,它带有一个线性但非平凡的向导,这样我就可以看一下实现.哎呀,甚至Java/Swing也许适合我,只要向导本质上是相似的.WPF对我来说是另一个挑战,我不想有2个问题而不是1个问题.
让我知道你能想到什么.我应该保留这些东西但是尽可能多地清理其他部分吗?随意问的问题.谢谢,
-HG
我在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)
谢谢!
我有p:wizard一些标签.在第一个选项卡中,用户选择一个值(t :selectOneRadio- 我正在使用Tomahawk).这是必需的价值.
如果用户未选择值,则不会转到下一个选项卡,但不会显示验证错误.嗯.
如果用户选择了一个值,则转到下一个选项卡,返回第一个选项卡并选择一个不同的值,它的行为就像这次没有选择任何值一样.(也没有验证错误,但无法调用第二个选项卡).
更糟糕的是:用户在第一个选项卡中选择一个值,转到第二个选项卡,尝试从那里调用一个操作......出现验证消息; 它就像在第一个选项卡中没有选择任何值一样.
这有什么解释吗?
UPDATE
PrimeFaces论坛中提出的解决方案为我工作.(将process ="@ this"添加到commandButton.)
我创建了一个基于SWT的向导,它有自定义的帮助按钮.现在我想把一些内容放在后面,所以也许SWT浏览器会开放,并且会显示预定义的HTML Doc.但我没有任何线索在我的向导中访问帮助按钮的操作.任何的想法?
我有一个页面,可以选择客人.
此页面包含一个更新面板,在更新面板中有一个向导控件,在向导控件中有一个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) 我正在尝试从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) 我使用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 返回活动向导页面?
我想渲染多步形式的第一步@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) 我对许多“标准”安装程序使用 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()运行时显示进度条(这将是理想的),并且将其放入自定义向导页面让我感到困惑。
wizard ×10
button ×2
c# ×2
asp.net ×1
formwizard ×1
gridview ×1
inno-setup ×1
java ×1
jface ×1
jsf ×1
mvvm ×1
netbeans ×1
oop ×1
openerp ×1
paging ×1
primefaces ×1
progress ×1
ruby ×1
swing ×1
swt ×1
updatepanel ×1
validation ×1
winforms ×1
wpf ×1
wpftoolkit ×1
xml ×1