1

マスターページのユーザーコントロールのコントロール値とユーザーコントロールのマスターページコントロール値にアクセスするにはどうすればよいですか?

ありがとうございます。それでは、お元気で

4

1 に答える 1

2

最善の策は、以下と同様の方法でユーザーコントロールのパブリックプロパティを作成することです。

public TextBox getMyTextBox()
{
    return this.myTextBox;
}

これにより、マスターページがコントロール全体にアクセスできるようになります。1つまたは2つの値のみを取得することに関心がある場合は、次のようにします。

public String getMyTextBoxValue()
{
    return this.myTextBox.Text;
}

マスターページからユーザーコントロールでアクセスできるようにするものに応じて、ユーザーコントロールを作成するときに(コンストラクターのパラメーターとして)そのオブジェクトへの参照を渡すことができます。

private object needObject;

public MyUserControl(object objectToReference)
{
     this.needObject = objectToReference;
}

このようにして、オブジェクトへの参照が得られます。これは、「オンザフライで-動的に」コントロールを作成する場合に簡単になります。最初からフォームデザインにそれらを含めたい場合は、別のメソッドを作成して参照を設定します。

public void setParentReference(object objectToReference)
{
    this.needObject = objectToReference;
}

マスターページでは、指定されたユーザーコントロールでこのメソッドを呼び出して、必要なオブジェクトを渡すことができます(プリミティブでない限り、プリミティブ値の場合は、プリミティブrefがデフォルトで値を送信するため、参照として渡すために使用します)。パラメータとその時点から、usercontrolはオブジェクトにアクセスできます。

もちろん、これは単純なオブジェクトへの参照を格納する例にすぎません(共有したいクラスやその他の値を渡すことができます)。

Control.Parentユーザーコントロール内の親にアクセスする場合は、現在のコントロールの親にアクセスできることを覚えておく必要があります。

UserControlクラスは継承し、そこから継承するContentControlので、これをControl簡単に行うことができます。

object parentReference = this.Parent;

ここで使用してから、それがフォームであるかobjectどうかを確認することをお勧めします。typeofこれは、コンテナー内にある場合はコンテナーが保管され、変数タイプが。の場合は例外が発生する可能性があるためですForm

これを使用してParentFormを取得することもできます。

Form parentReference = this.ParentForm;

ただし、この動的コントロールを作成したばかりで、まだフォームまたはコントロールの子リストに追加していない場合は、ParentおよびParentFormが検証されるため、使用またはキャストを試みる前にnull必ず検証してください。null何かとしてそれ。

次に、これを行うことにより、フォームの任意のプロパティを使用できます。あなたのマスターフォームはForm1と呼ばれていると思います。(public partial class Form1 : Form

((Form1)parentReference).somePublicProperty = someValue;

それがあなたのためにそれをクリアすることを願っています。

于 2013-02-23T12:39:37.033 に答える