Element auf Benutzersteuerelement ansprechen



  • Hallo zusammen,

    ich habe ein Benutzersteuerelement erstellt, auf das ich verschiedene andere Steuerelemente platziert habe. Unter diesen Steuerelementen ist auch eine "DataGridView" vorhanden, die für die Darstellung von DB-Werten dienen soll. Zur Laufzeit wird in ein TabControl eine neue TabPage hinzugefügt, und auf diese TabPage kommt dann das Benutzersteuerelement.

    Nun möchte ich die DataGridView mit Werten füllen, die ich zuvor aus der DB besorgt habe. Diese Daten sind in einem DataSet gekapselt, sodass ich anfangs versucht habe, über die DataGridView.DataSource-Eigenschaft die DB-Werte der GridView bekannt zu machen. Leider komme ich zur Entwurfszeit nicht an die DataGridView-Komponente heran. Zur Zeit habe ich es folgendermaßen versucht:

    UserControl.Controls["tabControl"].Controls["tabPage"].Controls["DataGridView"].DataSource
    

    Doch wie schon erwähnt, kann ich nicht auf die Eigenschaft "DataSource" zugreifen!! Es scheint so, als ob mir die DataGridView nicht zur Verfügung steht. Kann mir jemand bei diesem Problem helfen?? Es sollte so sein, dass ich in dieser GridView die Daten aus dem DataSet anzeigen kann.

    Vielen Dank für eure Hilfe!!
    Gruß

    P.S.: Auf der TabPage befinden sich neben der DataGridView auch noch andere Steuerelemente (z.B. Label etc.) die ich über die oben dargestellte Methode ansprechen kann. Ich kann diesen Labels auch Texte zuweisen!

    UserControl.Controls["tabControl"].Controls["tabPage"].Controls["Label1"].Text = "Das ist ein Test"
    

    Dieser Code wird korrekt ausgeführt!



  • In der Controls-Collection liegen Elemente vom Typ Control. Die Klasse Control hat eine Eigenschaft Text, aber keine Eigenschaft DataSource. Deshalb wird der Beispielcode auch funktionieren, solange Du die Text-Eigenschaft ansprichst (unabhängig davon, ob Label, TextBox, ...).

    Warum stellst Du das DataGridView nicht innerhalb Deines UserControl als Eigenschaft zur Verfügung?

    DataGridView Grid
    {
        get { return dataGridView1; }
    }
    
    /* ... */
    UserControl.Grid.DataSource = ...;
    


  • Hallo LordJaxom,

    danke für deine Hilfe. Dein Denkanstoß hat mir geholfen 🙂
    Jetzt kann ich die DataGridView ohne Probleme ansprechen und das sogar mit
    einer verkürzten Codezeile.

    Danke


Log in to reply