マスターページのユーザーコントロールのコントロール値とユーザーコントロールのマスターページコントロール値にアクセスするにはどうすればよいですか?
ありがとうございます。それでは、お元気で
最善の策は、以下と同様の方法でユーザーコントロールのパブリックプロパティを作成することです。
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;
それがあなたのためにそれをクリアすることを願っています。