1

私は現在、取り組んでいるプロジェクトのプログラムを作成しようとしています。

親の WinForm に埋め込まれた 2 つの UserForms を使用します。

私がする必要があり、機能していないように見えるのは、設定クラスへの参照を作成し、ユーザーフォームで変数を直接編集することです。データはシリアル化された XML を使用して保存されます

xml ファイルの読み取り/書き込みを制御するクラスがあります。最初に ParentForm で作成されます。次に、別のユーザー フォームで List<> 変数から読み取るいくつかの動的コントロールがあります。次に、そのデータを使用して、それらの変数を表示/編集できる別のユーザー フォームを作成します。

現在、問題なく表示できますが、変数を編集できません。ほとんどの場合、イベントを使用するか、フォームからフォームにデータをコピーするだけで、不必要なオーバーヘッドが発生するため、参照の使用にはあまり慣れていません。

よりよく説明するために

WinForm -> カテゴリを選択 -> UserForm1 を描画 (カテゴリ内のアイテムを表示) -> アイテムを選択 -> UserForm2 を描画 (アイテムを編集)

すべてのフォームは、WinForm の設定変数にアクセスする必要があります。

これは私が現在やっていることです:

編集フォーム:

public partial class EditPage: UserControl
{
    public StorageClass refSettings;
    public EditPage(ref StorageClass pSettings)
    {
                  refSettings = pSettings;

カテゴリーフォーム:

public partial class Categories: UserControl
{
    public StorageClass programSettings;
    public Categories(ref StorageClass pSettings)
    {
                  programSettings = pSettings;

もちろん、これは実際のコードではありませんが、私がやろうとしている主なことです。どんな助けでも素晴らしいでしょう

編集:エラーは発生していません。渡される変数は単に更新されていません。編集しようとすると、子編集フォームを破棄した後、元に戻ります。

4

2 に答える 2

0

最初に:タイプの名前を考慮して、それが参照型StorageClassであると推測します。したがって、この場合、キーワード付きの参照のように渡す必要はありません。ref

2番目:これが単なる、data-classプログラムの異なるドメイン間で共有する必要のあるデータを含むクラスである場合は、別のクラス、たとえばstatic1つで宣言します。

擬似コード

public static clss StorageClass 
{
     public StorageData Data1
     public StorageData Data2
     public StorageData Data3

}

そのクラス内のすべてのフィールドを正しく初期化すると、単純なアクセスなど、アプリケーションの任意の形式で使用できます。StorageClass.Data1

于 2012-09-10T07:03:54.060 に答える
0

XML から構成を読み取る共通の設定クラスを作成できますが、これは既にお持ちだと思います。 MainForm のパネル
内にロードして表示するユーザー コントロールを示すドロップダウン選択があるとします。そのため、SelectionChangedEvent からユーザー コントロールを呼び出し、 設定クラスを UserControls のコンストラクターに渡します。 ユーザー コントロールのアクションに応じて、UserControls でイベントを公開し、MainForm からこれらのイベントをサブスクライブして、MainForm に変更を加えることもできます。 何かを編集してユーザーコントロールからイベントを発生させ、MainParent フォームでそのイベントをサブスクライブしてから、MainForm から変更を加えたいとします。



于 2012-09-10T07:06:31.420 に答える