ユーザーが実行時にボタンやさまざまなコントロールを追加できる機能を備えた小さなC#-winformsプログラムを開発しています。
私が直面しているシナリオは次のとおりです。
-
1) ユーザーがボタンを追加し、そのプロパティを (ダイアログを介して) 設定します。
2) ユーザーが別のコントロールを追加します (そのプロパティも設定します)。
3) ユーザーはボタンを選択し、メニュー ストリップ項目からバインドを選択します。
4) 新しいダイアログが表示され、ドロップダウン メニューにすべての「その他のコントロール」が表示され、別のドロップダウンに (事前にコード化された) 関数が表示されます。ユーザーは、コントロールの 1 つと、それらをボタンのクリック イベントにバインドする関数を選択する必要があります。
5) ユーザーが自分のデザインをリリースすることを選択すると、ユーザーがデザインした簡単なプログラムを含む EXE ファイルが生成されます (まだこのステップについて考えています)。
私の現在の実装のアイデア:
ディクショナリは、すべてのボタンとそれに対応するバインドされた関数とコントロールを保持します.. (キー = buttonID 、値 = 関数名とコントロール ID を保持するオブジェクトまたはディクショナリ)。
ユーザーが自分のデザインを「リリース」することを選択すると、コードはフォームとすべてのコントロールを TEXT として構築し、辞書を使用して適切なコード ボタンを生成し、各ボタンのクリック イベントを適切な関数に接続します。
TEXT には、各ボタンをそのバインドされたコントロール (各関数の辞書) にマップする別の辞書が挿入されます。これは、ボタンの異なるバインドされたコントロールを区別するために関数が呼び出されるときに使用されます。
TEXT は .cs ファイルに挿入され、コンパイルされて EXE が生成されます (この手順を自動化する方法はまだ検討中です)。
この解決策は複雑すぎて、他にもっと簡単な解決策があるかもしれないと思います。
ティア
編集:
これは単純なプロジェクトで、非プログラマーがスーパーマーケットの在庫や DVD ストア ライブラリなどの独自の単純なプログラムを作成できるようにすることを目的としています。今のところ、単純な電卓の仕事 (1 つのテキストボックス、2 つのボタン、および ADD、Subtract などの機能) を行います。