Usercontrol | Verschachtelte Eigenschaften

Wowan

Grünschnabel
Guten Tag,
zur zeit Entwickle ich ein eigenes Steuerelement, doch leiber bin ich auf ein Problem gestoßen.

Ich versuche eine verschachtelte Eigenschaft zu erstellen.
Hab es auch soweit geschafft, doch es erscheinen noch unnötige Methoden/Eigenschaften/... von der geerben Klasse.

Das Ergebniss sollte wie bei einem Datagridview aussehen:
Code:
datagridview.SelectedCells.Count

Mein derzeitiger Code:

Hier werden unter imageview1.SelectedCells noch alle Methoden/Eigenschaft/... der geerbten Klasse angezeigt.

Code:
public class ImageViewer
{
    protected ArrayList _selected = new ArrayList();
    public _SelectedCells SelectedCells
    {
        get
        {
            throw new InvalidCastException("Es ist kein direkter zugriff auf diese Eigenschaft möglich.");
        }
    }

    public class _SelectedCells : ImageViewer
    {
        private string[] arr = new string[5];

        public string this[int i]
        {
            get
            {
                return arr[i];
            }
        }

        public int Count
        {
            get
            {
                return _selected.Count;
            }
        }
    }
}


Wie kriege ich es hin das nur die ArrayList _selected übergeben wird und nicht die ganze Klasse?
Wie kann ich die zur Auswahl stehenden Methoden/Eigenschaften/... beliebig eingrenzen?

Wäre für Lösungsansätze oder andere Lösungswege sehr dankbar.

MfG
Wowan
 
Zuletzt bearbeitet:
danke für die antwort, habe es jetzt aber so gelöst:

Code:
    public partial class ImageViewer : UserControl
        private static List<int> _selected = new List<int>();

        private SelectedCell _selCell = new SelectedCell(_selected);
        public SelectedCell SelectedCells
        {
            get
            {
                return _selCell;
            }
        }

        public class SelectedCell
        {
            private List<int> _selected = new List<int>();
            public SelectedCell(List<int> _selected)
            {
                this._selected = _selected;
            }
            private string[] _arr = new string[5];

            public string this[int i]
            {
                get
                {
                    return _arr[i];
                }
            }

            public int Count
            {
                get
                {
                    return _selected.Count;
                }
            }
        }
    }

wobei

Code:
            public string this[int i]
            {
                get
                {
                    return _arr[i];
                }
            }

durch eine weitere verschachtelung ersetzt wird.
 
Zurück