Lsteinme Geschrieben 23. April 2013 Teilen Geschrieben 23. April 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lsteinme Geschrieben 23. April 2013 Autor Teilen Geschrieben 23. April 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.