1

Windows アプリケーションを POS システムとして構築しています。ユーザーがウィンドウに新しいボタンを追加できる機能を追加したいと考えています。ユーザーが商品名や価格などの情報を入力すると、アプリケーションは新しいボタンを作成するコードを生成し、そのコードを MainForm.cs と MainForm.Designer.cs に追加します。

ただし、ソース コードの変更は、アプリケーションを停止してコンパイル済みの exe を再実行するまで反映されません。アプリケーションがまだ実行されているときにアプリケーションを再構築することは可能ですか? (つまり、ユーザーは、情報を入力した直後に新しいボタンがウィンドウに表示されるのを見ることができます)

Application.Restart(); を使用してみました。と this.Refresh(); が、うまくいきませんでした。

4

3 に答える 3

6

ここでは正しいアプローチを使用していません。

ユーザー入力に基づいてアプリケーションのコードを変更しないでください。
代わりに、ユーザーが入力したデータをデータベースまたはファイルに保存し、この情報を使用してボタンを動的に表示します。

于 2012-12-12T10:00:06.667 に答える
0

つまり、アプリケーションを再構築すると、実行中のプロセスによって通常ロックされているディスク上の実行可能イメージ ファイルが置き換えられるためです。

Visual Studio およびその他の IDE は、「エディット コンティニュ」をサポートしています。これにより、プログラムがブレークポイントで待機している間に実行時にコードを置き換えることができますが、限られた数のケース (既存のメソッドのコードを修正するなど) でのみ可能です。大規模な機能や GUI の変更には十分な柔軟性がありません (XAML リソースを使用している場合は、まったく不可能です)。

探しているような柔軟性が必要な場合は、これらの種類の機能をサポートする古い学校のメインフレーム スタイルのシステム (IBM Z シリーズなど) を深く掘り下げる必要があります。

于 2012-12-12T10:03:19.010 に答える
0

これは可能だと思います...しかし、制限があります。AppDomain を作成し、dll コード (アプリケーション フォームを含むこの dll) をロードできます。次に、アプリ ドメインをアンロードし、dll をビルドして、新しい AppDomain を再作成します。

もちろん、現在開いているウィンドウを閉じる必要があり、単純な WinForms アプリケーションとはまったく異なる DLL アーキテクチャを使用する必要があります。

これは、たとえば自動更新に推奨する種類のものです

于 2012-12-12T10:01:56.010 に答える