Workflow 工作流规则集对话框

Workflow 工作流规则集对话框,workflow,workflow-foundation,rules,Workflow,Workflow Foundation,Rules,我们可以在windows应用程序中扩展RuleSetDialog类和宿主吗?您不能扩展RuleSetDialog类(因为它是密封的),但您可以在应用程序中宿主它: 虽然扩展对话框确实不受支持,但您可以通过一些定制来摆脱。在上一个项目中,我能够在运行时隐藏和重新排列一些对话框控件 var dialog = new RuleSetDialog(activityType, null, ruleset); dialog.Controls["headerTextLabel"].Visibl

我们可以在windows应用程序中扩展RuleSetDialog类和宿主吗?

您不能扩展RuleSetDialog类(因为它是密封的),但您可以在应用程序中宿主它:


虽然扩展对话框确实不受支持,但您可以通过一些定制来摆脱。在上一个项目中,我能够在运行时隐藏和重新排列一些对话框控件

var dialog = new RuleSetDialog(activityType, null, ruleset);
dialog.Controls["headerTextLabel"].Visible = false;
dialog.Controls["pictureBoxHeader"].Visible = false;

...

var ruleGroupBox = dialog.Controls["ruleGroupBox"];
ruleGroupbox.Top -= 46;

... etc.

打开反射器,四处张望。没有任何东西可以阻止您隐藏和移动控件以进行自定义。您甚至可以将控件添加到组框中,重新布线按钮处理程序,或者完全按照自己的喜好重新排列表单。这有点像手动操作,但也可以做到。

您只需稍加修改即可完全做到这一点:将intellisense文本框内部控制与System.Workflow.Activities.Rules.Design命名空间分开。。。那么你几乎可以用它做任何事情。分离在这里意味着通常的做法:创建一个包装器(适配器,确切地说,可能是一个Textbox控件),在解析一些依赖项之后实例化(最坏的情况下,您可以只隐藏原始的规则编辑器、解析器等)