【发布时间】:2008-10-16 06:58:03
【问题描述】:
我们能否以某种方式扩展 RuleSetDialog 类并在我们的 Windows 应用程序中托管?
【问题讨论】:
标签: workflow workflow-foundation rules
我们能否以某种方式扩展 RuleSetDialog 类并在我们的 Windows 应用程序中托管?
【问题讨论】:
标签: workflow workflow-foundation rules
你不能扩展 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.
启动反射器并四处寻找。没有什么可以阻止您隐藏和移动控件来自定义它。您甚至可以将控件添加到组框,重新连接按钮处理程序,或者根据自己的喜好完全重新排列表单。有点手动,不过还是可以的。
【讨论】:
您可以通过一点技巧完全做到这一点:将智能文本框内部控件与 System.Workflow.Activities.Rules.Design 命名空间分开......然后您几乎可以用它做任何事情。分离在这里通常意味着:创建一个包装器(恰好是一个文本框控件的适配器),在解决一些依赖关系之后实例化(最坏的情况是您可以隐藏原始规则编辑器、解析器等...)。
【讨论】: