Windows アプリケーションで RuleSetDialog クラスとホストを何らかの方法で拡張できますか?
3 に答える
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名前空間から分離します...それでほとんど何でもできます。分離とは、ここでは通常のことを意味します: ラッパーを作成し (アダプターは、おそらく Textbox コントロールである可能性があります)、いくつかの依存関係も解決した後にインスタンス化します (最悪の場合、元のルール エディター、パーサーなどを非表示にすることができます)。