0

ユーザーが実行時にボタンやさまざまなコントロールを追加できる機能を備えた小さなC#-winformsプログラムを開発しています。

私が直面しているシナリオは次のとおりです。

    1) ユーザーがボタンを追加し、そのプロパティを (ダイアログを介して) 設定します。
    2) ユーザーが別のコントロールを追加します (そのプロパティも設定します)。
    3) ユーザーはボタンを選択し、メニュー ストリップ項目からバインドを選択します。
    4) 新しいダイアログが表示され、ドロップダウン メニューにすべての「その他のコントロール」が表示され、別のドロップダウンに (事前にコード化された) 関数が表示されます。ユーザーは、コントロールの 1 つと、それらをボタンのクリック イベントにバインドする関数を選択する必要があります。
    5) ユーザーが自分のデザインをリリースすることを選択すると、ユーザーがデザインした簡単なプログラムを含む EXE ファイルが生成されます (まだこのステップについて考えています)。

私の現在の実装のアイデア:
ディクショナリは、すべてのボタンとそれに対応するバインドされた関数とコントロールを保持します.. (キー = buttonID 、値 = 関数名とコントロール ID を保持するオブジェクトまたはディクショナリ)。

ユーザーが自分のデザインを「リリース」することを選択すると、コードはフォームとすべてのコントロールを TEXT として構築し、辞書を使用して適切なコード ボタンを生成し、各ボタンのクリック イベントを適切な関数に接続します。

TEXT には、各ボタンをそのバインドされたコントロール (各関数の辞書) にマップする別の辞書が挿入されます。これは、ボタンの異なるバインドされたコントロールを区別するために関数が呼び出されるときに使用されます。

TEXT は .cs ファイルに挿入され、コンパイルされて EXE が生成されます (この手順を自動化する方法はまだ検討中です)。

この解決策は複雑すぎて、他にもっと簡単な解決策があるかもしれないと思います。

ティア

編集:
これは単純なプロジェクトで、非プログラマーがスーパーマーケットの在庫や DVD ストア ライブラリなどの独自の単純なプログラムを作成できるようにすることを目的としています。今のところ、単純な電卓の仕事 (1 つのテキストボックス、2 つのボタン、および ADD、Subtract などの機能) を行います。

4

1 に答える 1

1

ユーザーが設計する「プログラム」をコンパイルするのはひどい考えだと思います。あなたができることは、作成されたオブジェクトをシリアライズし、デシリアライズしてプログラムにロードできるファイルに書き込んで、ユーザーが作成した「プログラム」を表示することです。すべての機能が事前定義されている場合は、ボタン クラスから拡張された新しいクラスに格納された一意のキーを使用して、ボタンにリンクする機能を指すことができます。ユーザーが使用できるオブジェクトの配列を保存し、最初からすべての Visible プロパティを false に設定して「カスタマイズ」することができます。ユーザーが作成したプログラムのコンパイルが必要かどうか、またはシリアル化されたオブジェクトをプラグインすることでプログラムをカスタマイズ可能なプログラムとして使用できるかどうかはわかりません。

プログラムの望ましい目標は正確には何ですか?

あなたのデザインに新しいアイデアをもたらすために、何らかの形でお役に立てば幸いです。詳しい情報を教えていただければ、参考になるコード例をいくつか作成してみます。

于 2010-01-09T00:24:25.773 に答える