0

コントロールライブラリと2つのユーザーコントロールを作成しました。

userControl_1 contains a Panel and an ImageList that I have "loaded" with
images in design time.

userControl_2 contains a PictureBox

userControl_1をWindowsフォームに配置しました。userControl_2は、userControl_1のパネル領域に配置されます。

目標は、imageListから画像を選択し、次のようにpictureBoxで表示することです。

nameOfPictureBox.Image = nameOfList.Image[number]

しかし、私はそれを機能させません。ユーザーコントロール間の通信方法がわかりませんか?上記のコードはuserControl_1内にあるべきだと思いますか?しかし、userControl_1.csクラスファイルまたはuserControl_1.Designer.csファイル内のどこにコードを配置しますか?

いくつかの助けを正確に!ありがとう!

4

1 に答える 1

2

Designerファイルは通常、Webコントロール定義にのみ使用され、生成されるため、コードの場所にはしないでください。

ユーザーコントロールのコードビハインドファイル(.cs)に機能を拡張する必要があります。

ユーザーコントロールからデータを公開する簡単な方法の1つは、ユーザーコントロールの背後にあるコードにパブリックプロパティを作成して、コントロールの知識をカプセル化し、データを公開することです。

UserControl_2クラスでは次のようになります。

public Image PictureBoxImage{
    get { return pictureBox.Image; }
    set { pictureBox.Image = value; }
}

次に、コントロールの内部構造を非表示にすることができる操作が簡単なプロパティがありますが、それでもUserControl_1コードがそれを設定できるようにします。

次に、KDiTragliaのコードを微調整して、次のようなことを行うことができます。

foreach(var item in this.Panel)
{
    if (item is UserControl_2)
    {
         var ctrl = (UserControl_2)item;
         ctrl.PictureBoxImage = ...
    }
}

これにより、UserControl_1がその構造について知る必要なしに、ユーザーコントロールが適切な内部コントロールに委任できるようになります。

于 2012-08-14T16:50:54.390 に答える