Zum Inhalt springen

VB.Net Tablelayout, LayoutEngine


Empfohlene Beiträge

Geschrieben

Hallo, mal wieder ne Frage^^

Ich hab aktuell das problem, das mir der folgende Code:

Dim ctrl As Control = DirectCast(sender, Control)

            Dim tlp As TableLayoutPanel = CType(ctrl.Parent, TableLayoutPanel)

            Dim row As Integer = tlp.GetPositionFromControl(ctrl).Row

eines Eventlisteners ziemlich seltsame ergebnise produziert. der genannte Listener ist für 2 selbstgeschriebene Button/Combobox Componenten listener. Diese Componeten werden im per Code unten, mehrfach mit unterschiedlichen inizialiserungen einem Tablelayout hinzugefügt.
Function init3Controls(inactiv As Boolean, pma As Projekt_Mitarbeiter, Optional hassubs As Boolean = False, Optional OPXMitarbeiter As Boolean = False) As Control()

            Dim retarray(2) As Control

            Dim cbxRole As New System.Windows.Forms.CheckBox

            Dim cboRoleType As New TeamComboBox(Me)

            Dim btEmployee As New EmployeeButton(pma.Mitarbeiter.ID)



            With cbxRole

                If (inactiv) Then

                    .Checked = False

                End If

                .AutoSize = True

                .Anchor = System.Windows.Forms.AnchorStyles.None

                .Name = pma.ID.ToString

                .TabIndex = 0

                .Text = ""

                AddHandler .CheckedChanged, AddressOf cbxCheckedChangedEvent

                AddHandler .KeyDown, AddressOf KeyDownEvent


            End With


            With cboRoleType

                'If (inactiv) Then

                '    .disableSelection = True

                'End If

                If (hassubs Or inactiv) Then

                    .Enabled = False

                End If

                .Anchor = System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right

                .FormattingEnabled = True

                .Name = pma.ID.ToString

                .AutoCompleteMode = AutoCompleteMode.Suggest

                .AutoCompleteSource = AutoCompleteSource.ListItems

                .DropDownStyle = ComboBoxStyle.DropDownList


                .Items.Add(pma.Rollen_Typ)

                .SelectedIndex = 0

                AddHandler .SelectedIndexChanged, AddressOf ValueChangedEvent

                AddHandler .KeyDown, AddressOf KeyDownEvent

            End With


            With btEmployee

                Dim fo As System.Drawing.Font = .Font


                .Anchor = System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right

                .Name = pma.ID.ToString

                If (hassubs Or inactiv) Then

                    .Enabled = False

                End If

                If Not (inactiv) Then

                    AddHandler .EmployeeChanged, AddressOf ValueChangedEvent

                    AddHandler .KeyDown, AddressOf KeyDownEvent

                    AddHandler .Click, AddressOf BTEmployeeClick

                End If

            End With

            retarray(0) = cbxRole

            retarray(1) = cboRoleType

            retarray(2) = btEmployee

            Return retarray

        End Function

Nun kommt aber später, wenn man einen der Buttons klickt MANCHMAL bei getRow -1 raus. MSDN meinte dazu nur -1 käme raus wenn die LayoutEngine eine Control setzt.

Jetzt ist meine Frage, was sind die Bedingungen für die Layoutengine um eine Control zu setzen?

Denn manche Buttons funktionieren ohne probleme, hier kommt bei getrow der richtige Wert raus, und bei anderen, im gleichen Layout, über die gleiche Schleife erstellt, liefert mir getrow -1.

Hoffe mir kann da jemand die erleuchtung bringen, bin da grad etwas verwirrt, MSDN ist da auch nicht sehr hilfreich da ich hier nirgends gefunden habe WANN diese Engine eine Control setzt.

Gruß

Lucas

Geschrieben

UPDATE: ok, dieser komische Fehler kommt sogar bei einem einfachen CheckedChange Listener, der ebenfalls über GetRow laufen muss um eine weitere Componete der Row abzufragen. es hat also nichts speziel mit den eigenen Componeten zutun

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...