Zum Inhalt springen

Lsteinme

Mitglieder
  • Gesamte Inhalte

    65
  • Benutzer seit

  • Letzter Besuch

Beiträge von Lsteinme

  1. Hallo, bisher hat folgender Code immer funktioniert und mir den korrekten Pfad zu meiner GC geliefert:

    
    'Nach dem Connection String suchen
    
            Dim oCont As Object = GetObject("GC:")
    
            For Each gc As Object In oCont
    
               gcPath = gc.ADsPath
    
            Next
    
    

    Versuche ich das ganze nun aber unter Windows 7 auf einem Server, so bekomme ich immer ein leeres gcPath Objekt/String raus. Wie man sicher sicher denken kann, will ich später auch was aus der GC auslesen, wegen ich den Pfad brauche.

    Ich hab auch versucht einfach mal den String fix vorzugeben, auch das funktioniert im Serverkontext nicht, bzw ich bekomme eine "Network path not found" Com-Exception zurück wenn icher später versuche den Pfad zum abruf von Daten zu verwenden.

    Was jedoch funktioniert ist das ganze auf einer lokalen Rechner internen Festplatte laufen zu lassen. hier funktioniert alles wie bisher gewohnt. Ebenso funktioniert das gleiche Prozedere, mit dem Absolut gleichen Code, wenn man es von einem W-XP Rechner aus an startet ohne Probleme.

    Woran kann dieses verhalten liegen? wurde da von Windows XP zu Windows 7 irgendwas geändert in Sachen Zugriff auf die GC? Oder liegt da ehr beim Server was im argen?

    Hoffe jemand weiß da Rat,

    gruß Lucas

  2. Hallolo,

    Ich hab aktuell mal wieder ein Problem das ich net so ganz nachvollziehen kann, (wer häts gedacht^^), und hoffe hier vielleicht jemand ne Idee hat wie das zu lösen ist.

    Problem is wie folgt:

    Ich hab ein Tablelayout das sich beliebig vergrößern kann in einem 2ten Tablelayout integriert. Das innere Tablelayout hat Autoscoll auf on gestellt.

    Wenn ich das Programm starte, und das Window ist zu klein für eine Volle anzeige, erscheinen auch die scrollbars.

    Drücke ich jetzt aber 2 mal Maximieren (lasse das fenster also wieder schrumpfen), so erscheinen die scrollbars nicht wieder und mein Content wird beschnitten.

    Woran liegts?

    Kann gern den Designercode dazu posten, denk aber net das das viel hilft^^

  3. Hier mal eine Kurzversion des Codes der die bugs hervorruf:

    Logischer Teil:

    Public Class Form1
    
        Dim contstrip As ContextMenuStrip
    
        Sub New()
    
    
            ' This call is required by the designer.
    
            InitializeComponent()
    
    
            ' Add any initialization after the InitializeComponent() call.
    
            Dim dt As New DataTable("testtable")
    
            Dim dv As New DataView
    
            dv.Table = dt
    
            dt.Columns.AddRange({New DataColumn("Col1"), New DataColumn("Col2"), New DataColumn("Col3")})
    
            Dgv.DataSource = dv
    
            contstrip = New ContextMenuStrip(Me.components)
    
            AddHandler contstrip.Opening, AddressOf openhandler
    
            For Each col As DataGridViewColumn In Dgv.Columns
    
                col.HeaderCell.ContextMenuStrip = contstrip
    
                Dim item As New ToolStripMenuItem(col.HeaderText)
    
                AddHandler item.Click, AddressOf clickhandler
    
                item.Checked = True
    
                item.CheckOnClick = True
    
                contstrip.Items.Add(item)
    
            Next
    
        End Sub
    
        Public Sub clickhandler()
    
    
        End Sub
    
        Public Sub openhandler(sender As System.Object, e As System.ComponentModel.CancelEventArgs)
    
            Dim refofStrip As Integer = contstrip.GetHashCode
    
            Dim refoffirstitem As Integer = contstrip.Items(0).GetHashCode
    
            Dim refofsender As Integer = sender.GetHashCode
    
        End Sub
    
    End Class
    Designer:
    
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    
    Partial Class Form1
    
        Inherits System.Windows.Forms.Form
    
    
        'Form overrides dispose to clean up the component list.
    
        <System.Diagnostics.DebuggerNonUserCode()> _
    
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    
            Try
    
                If disposing AndAlso components IsNot Nothing Then
    
                    components.Dispose()
    
                End If
    
            Finally
    
                MyBase.Dispose(disposing)
    
            End Try
    
        End Sub
    
    
        'Required by the Windows Form Designer
    
        Private components As System.ComponentModel.IContainer
    
    
        'NOTE: The following procedure is required by the Windows Form Designer
    
        'It can be modified using the Windows Form Designer.  
    
        'Do not modify it using the code editor.
    
        <System.Diagnostics.DebuggerStepThrough()> _
    
        Private Sub InitializeComponent()
    
            Me.components = New System.ComponentModel.Container()
    
            Me.Dgv = New System.Windows.Forms.DataGridView()
    
            Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
    
            CType(Me.Dgv, System.ComponentModel.ISupportInitialize).BeginInit()
    
            Me.SuspendLayout()
    
            '
    
            'Dgv
    
            '
    
            Me.Dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
    
            Me.Dgv.Dock = System.Windows.Forms.DockStyle.Fill
    
            Me.Dgv.Location = New System.Drawing.Point(0, 0)
    
            Me.Dgv.Name = "Dgv"
    
            Me.Dgv.Size = New System.Drawing.Size(588, 463)
    
            Me.Dgv.TabIndex = 0
    
            '
    
            'ContextMenuStrip1
    
            '
    
            Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
    
            Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4)
    
            '
    
            'Form1
    
            '
    
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    
            Me.ClientSize = New System.Drawing.Size(588, 463)
    
            Me.Controls.Add(Me.Dgv)
    
            Me.Name = "Form1"
    
            Me.Text = "Form1"
    
            CType(Me.Dgv, System.ComponentModel.ISupportInitialize).EndInit()
    
            Me.ResumeLayout(False)
    
    
        End Sub
    
        Friend WithEvents Dgv As System.Windows.Forms.DataGridView
    
        Friend WithEvents ContextMenuStrip1 As System.Windows.Forms.ContextMenuStrip
    
    
    End Class
    
    

    Realcode is zwar komplizierter, tut aber mit dem CMS nicht mehr

  4. ok ich hab nochmal bisle am Ablauf rum geforscht, es sieht so aus, als ob irgendwo während der Laufzeit, an einem Punkt, auf den ich keinen Einfluss habe, die Referenz auf eine Art Clon geändert wird.

    Nach der Inizialen zuweisung des CMS an die Columns, sind die Objekte nämlich, laut Hashcode, alle die gleichen.

    Der Unterschied tritt erst beim öffnen des CMS über den Columns auf.

    Ich weis aber mit absoluter Sicherheit, das ich zwischen der inizialisierung und der öffnung des Strips im Code NICHTS mit dem CMS der einzelnen Columns mache.

    kennt jemand so ein Problem und kann mir ne Lösung verraten? Ich wär auch schon froh wenn mir jemand sagen könnte, was das System veranlasst von einem Objekt, ohne expliziten Cloneaufruf, eine Kopie anzufertigen und diese zuzuweisen.

    Denn die Objekte sind Semantisch, bis auf die checked/unchecked werte gleich, alle haben die Gleichen items.

  5. Nachtrag: durch kleinere Tests hab ich raus gefunden, das aus irgend einem Grund bei mir insgesammt n+1 Contextmenustrip existieren wobei n die anzahl der spalten ist.

    nämlich der eigentliche ColumnStrip sowie für jede Column ein eigener Strip.

    Erfahren hab ich das in dem ich die Hashwerte der Objekte verglichen hab die ein Open Event auslösen

    ich kann mir jedoch nicht erklären woran das liegt.

  6. Hallolo,

    folgendes Problem: ich habe für einen DGV mit evtl vielen Columns einen Contextmenustrip eingebaut, in dem man die angezeigen spalten auswählen kann. Da ich vorher mit dem Cms noch nie gearbeitet habe, bitte ich um Nachsicht, wenn ich mich grad mal wieder wie der Hahn zum Eier legen anstelle^^

    hier der Code dazu:

    
    Dim items(5 + Process_Dict.Count) As ToolStripMenuItem
    
                Dim count As Integer = 0
    
                For Each c As DataGridViewColumn In accessor.DGV.Columns
    
                    If (c.HeaderText.Equals("Dkey") Or c.HeaderText.Equals("key")) Then
    
                        c.Visible = False
    
                        Continue For
    
                    End If
    
                    Dim item As New ToolStripMenuItem(c.HeaderText)
    
                    item.CheckOnClick = True
    
                    If My.Settings.Cols.Contains(item.Text) Then
    
                        item.Checked = True
    
                    End If
    
                    AddHandler item.Click, AddressOf ShowOrHideColumns
    
                    items(count) = (item)
    
                    c.HeaderCell.ContextMenuStrip = accessor.ColumnStrip
    
                    If Not (My.Settings.Cols.Contains(c.HeaderText)) Then
    
                        c.Visible = False
    
                    End If
    
                    count += 1
    
                Next
    
                accessor.ColumnStrip.Items.AddRange(items)
    
    

    Das problem ist jetzt aber, das jede Column die ich anklicke einen eigenen Cms zu haben scheint.

    Wenn ich jetzt aber in Column 1 ein item ankreuze, dann wird das zwar versteckt/gezeigt, aber in allen anderen Columns ist das gleiche item immernoch nicht angekreut.

    Was ist da los?

    Gruß

    Lucas

  7. kann man eigendlich, unabhängig von welchem .NET dilekt, eine methodenaufruf mit einem verzögerungsmerker belegenen?

    Beispiel in Psydocode:

    Methode1:

    call Methode 2;

    call Methode 3;

    return

    methode 2:

    return

    warte bis caller fertig ist dann

    Do Something;

    return

    methode 3:

    do Something;

    return.

    Die aufruf hierarchie sollte dann wie folgt aussehen:

    ->=call

    -->= return

    methode4-> methode1

    methode1->methode2 -->

    methode1->methode3 -->

    methode1-->

    continue methode2(Teil2)

    continue methode4

    Ich weiß, klingt erstmal ziemlich komisch, wäre nur recht praktisch zb wenn Events ins Spiel kommen und ein Eventhandler mehrere Dinge nacheinander tut, man aber auf den Handler selbst keinen Zugriff hat.

    Hoffe es ist einiger maßen verständlich was ich meine^^

  8. Hallo mal wieder,

    heute gehts um Outlook^^

    Ich soll jetzt unsere Outlookautoemailfunktion überarbeiten. Das Problem dabei ist, ich hab aus der DB teilweise Emailadressen von speziellen mitarbeitern, aber auch Verteilerlistennamen.

    Wenn ich nun stumpf die Verteilerlisten in den To: Bereich jage, und dann die Mitarbeiter die auch noch dabei seien sollen, kommt es oft vor das da Mitarbeiter mehrmals drin sind, einmal in einer Verteilerliste, einmal in den zusätzlichen (diese kommen meist aus den Mitgliedern von irgendwelchen Gruppen).

    Ich hab zwar auf Gewusst wie: Liste der Mitglieder einer Verteilerliste mithilfe von Outlook Object Model in Visual Basic .NET ne anleitung gefunden, wie ich mir listen auflösen lassen kann, aber irgendwie knallt das bei mir in der Zeile oDLs as Outlook.AddressLists= oNS.AdressLists immer. Begründung: "Attribut nicht gefunden"

    {Public member 'AdressLists' on type 'NameSpaceClass' not found}

    Teil A: wie kann das sein und wie kann ichs beheben?

    Teil B: gibts da nicht ne einfachere Möglichkeit eine bestimmte verteilerliste excel zu geben und aufgelöst zurück zu bekommen?

    Und für die codebegeisterten, hier mal mein bisheriger Pcode, auch wenn der glaub ich hier wenig bringt.

    einzig was das oNS.Logon() angeht frag ich mich ob das so passt, aber ich bekomm zumindest bei dem schritt keine Exception.

    If params.ContainsKey(C_MailToIdentifier) Then
    
                            If params(C_MailToIdentifier).Length > 0 Then
    
                                Dim oApp As Outlook.Application = New Outlook.Application
    
                                Dim oNS As Outlook.NameSpace = olApp.GetNamespace("mapi")
    
                                oNS.Logon()
    
                                Dim oDLs As Outlook.AddressLists = oNS.AdressLists
    
                                Dim oGal As Outlook.AddressList = oDLs.Item("Global Address List")
    
    
                                Dim RealMailTo As String = ""
    
                                Dim MailingmemberDict As New Dictionary(Of String, List(Of String))
    
                                Dim parts() As String = params(C_MailToIdentifier).Split(";")
    
                                For Each part As String In parts
    
                                    If Not (part.Contains("@")) Then
    
                                        MailingmemberDict.Add(part, New List(Of String))
    
                                        Dim sDL As String = part.Substring(0, part.Length - 2)
    
                                        Dim oEntries As Outlook.AddressEntries = oGal.AddressEntries
    
                                        Dim oDL As Outlook.AddressEntry = oEntries.Item(sDL)
    
                                        Dim oEntry As Outlook.AddressEntry
    
                                        For i As Integer = 1 To oEntries.Count
    
                                            oEntry = oEntries(i)
    
                                            MailingmemberDict(part).Add(oEntry.Name)
    
                                        Next
    
                                        RealMailTo += part
    
                                    End If
    
                                Next
    
    
                                For Each part As String In parts
    
                                    Dim found As Boolean = False
    
                                    For Each list As List(Of String) In MailingmemberDict.Values
    
                                        For Each ma As String In list
    
                                            If ma.Equals(part.Substring(0, part.Length - 2)) Then
    
                                                found = True
    
                                            End If
    
                                        Next
    
                                    Next
    
                                    If found = False Then
    
                                        RealMailTo += part
    
                                    End If
    
                                Next
    
                                .To = RealMailTo
    
                            End If

    gruß Lucas

  9. Ok, das ist zwar keine vernünftige erklärung in meinen Augen, aber es kam vom Rollennamen. Nach dem ich hier hinter die .toString-methode ein Trim ran gehängt hab hat es funktioniert. Die rolle für dich ich den fehler bekommen hatte, hatte auch einen Whitespace in der Mitte, aber warum hat das den Hashcode beeinflust wenn ich ein Trim dahinter hänge? eigentlich sollte doch .toString, wenn ich es an den Namen der Rolle hänge, immer den gleichen Text liefern und da garnicht selbst dran rum pfuschen oder?

  10. Hi, ich hab eben mal wieder ne Seltsamkeit gefunden,

    ich hab mir eine Grafische Oberfläche aufgebaut in der man sämmtliche Mitarbeiter eines Projekts sehen kann.

    Da es nicht möglich sein soll, 2mal die gleiche Mitarbeiter-Rolle-Projekt kombi in der Datenbank zu haben, hab ich vor dem Speichern eine Abfrage eingebaut, die durchtestet ob sich durch eine Änderung oder das hinzufügen eines Neuen Mitarbeiters zum Projekt eine Inkonsitenz ergeben hat.

    das tut die Methode in dem sie für jede Row in dem Tabellayout der Groupboxen(für die Unterschiedlichen Rollenkategorien[Verwaltung,Produktion, etc]) ein Objekt folgender Klasse erstellt:

    Public Class valueTrippel(Of typ1, typ2, typ3)
    
        Public val1 As typ1
    
        Public val2 As typ2
    
        Public val3 As typ3
    
        Public Overrides Function Equals(obj As Object) As Boolean
    
            If obj.GetType.Equals(Me.GetType) Then
    
                Dim castedobj As valueTrippel(Of typ1, typ2, typ3) = CType(obj, valueTrippel(Of typ1, typ2, typ3))
    
                'Same Class but different variableTypes
    
                If Not (castedobj.val1.GetType.Equals(val1.GetType) AndAlso castedobj.val2.GetType.Equals(val2.GetType) AndAlso castedobj.val3.GetType.Equals(val3.GetType)) Then
    
                    Return False
    
                End If
    
                Dim vg1 As Boolean = castedobj.val1.Equals(Me.val1)
    
                Dim vg2 As Boolean = castedobj.val2.Equals(Me.val2)
    
                Dim vg3 As Boolean = castedobj.val3.Equals(Me.val3)
    
                If (vg1 AndAlso vg2 AndAlso vg3) Then
    
                    Return True
    
                End If
    
            End If
    
            Return False
    
        End Function
    
        Public Overrides Function GetHashCode() As Integer
    
            Dim hc As Integer = (val1.ToString & val2.ToString & val3.ToString).GetHashCode
    
            Return hc
    
        End Function
    
    End Class
    Die Rows können hierbei entweder 3 Lables oder aber eine checkbox und 2 spezialComponenten enthalten, welche ähnlich einer Combobox ein SelectedItem haben. Der eigentliche Consistenzcheck erfolgt dann so:
     
    
    Private Function SavePrecheck() As Boolean
    
            Dim trippellist As New Dictionary(Of valueTrippel(Of Projekt, Rollen_Typen, Mitarbeiter), Control())
    
            Dim successfull As Boolean = True
    
            Dim doubles As String = ""
    
            For Each kat As Rollen_Kategorien In ControlsDict.Keys
    
                For Each Cont As Control() In ControlsDict(kat).Values
    
                    If Not (Cont(1).GetType.Equals(GetType(TeamComboBox))) Then
    
                        Continue For
    
                    End If
    
                    Dim trippel As New valueTrippel(Of Projekt, Rollen_Typen, Mitarbeiter) With {.val1 = project, .val2 = CType(CType(Cont(1), TeamComboBox).SelectedItem, Rollen_Typen), .val3 = CType(Cont(2), EmployeeButton).Employee}
    
                    If Not trippellist.ContainsKey(trippel) Then
    
                        trippellist.Add(trippel, Cont)
    
                    Else
    
                        successfull = False
    
                        doubles += trippel.val2.ToString & trippel.val3.ToString & vbNewLine
    
                    End If
    
                Next
    
            Next
    
            If Not successfull Then
    
                MsgBox("Error: At least one Entry was more then ones in the View, the values were:" & vbNewLine & doubles & "please fix this inconsistence before saving", MsgBoxStyle.Critical, "Error")
    
            End If
    
            Return successfull
    
        End Function
    
    

    Jetzt tauch hier aber ein komischer Hashwert fehler in der zeile

    If Not trippellist.ContainsKey(trippel) Then

    auf.

    Ich bin hier mehrmals im Debuger durchgegangen, und zuerst geht die ContainsKey-Methode ja immer in getHashcode.

    Hier jedoch kommt bei 2 Objekten bei denen die Variablen val1-val3 jeweils identisch sind unterschiedliche Hashwerte. Wie kann das sein?

    Einmal bekomm ich: -1597763128 und einmal -590045485

    Die ToString Methoden sind sauber überschieben, und liefern jeweils den Projektnamen, Rollennamen und Mitarbeiternamen zurück

    Gruß Lucas

  11. Arg was is den das jetzt wieder, seit ich das Teil mit Notepade++ geöffnet hab, spinnt das Visualbasic bei der DLL rum. sobald ich jetzt den Typ wieder umstelle, will er mir die Settings und den RessourceDesigner ein 2tes Mal unterjubeln, und erstellt da für auch gleich Dateien. Die folge davon: Es gibt nun für allerlei doppelte signaturen.... wie werd ich das wieder los? ich kanns zwar manuel aus dem Script löschen, aber der mist baut es beim nächsten welchel wieder ein

  12. aber mal zurück zu dem Build-Thema, wo liegt den eigentlich das BUILDScript mit dem VS mein Projekt baut, direkt im Projektverzeichnis oder irgendwo versteckt? Weil ich hab bis jetzt noch keine besonders auffällige Dateiendung bzw eine Datei mit dem namen einer meiner Build-Configs gesehen.

  13. Ja Globale Variablen is hier vielleicht ein wenig blöd formuliert^^ Das sind (zu 90%) nur Dictionarys, die einfach aus so ziemlich jeder Ecke angegelotzt und manchmal sogar bearbeitet werden^^ Und um ehrlich zu sein, mit dem Programmierparadigma .NET hab ich mich bis jetzt nicht beschäftigt, das is nur ein Praktikum, und bald wieder vorbei^^ Trotzdem, mal ganz allgemein, was is gegen Globale Variablen einzuwenden? (oder definier ich mir den Begriff nur falsch? Ich versteh darunter ne statische Variable, oder in dem Fall ne Modulvariable die von vielen Klassen angefasst werden kann, und aus Datenkonsistenzgründen nicht in jeder Klasse einzeln existiert)

  14. Ich stimm dir zu das es nicht all zu toll ist, hat aber einen Vorteil, da verschiedene Tool einen gemeinsamen Kern nutzen, dieser Kern ist in den DLLs enthalten. Es geht dabei hauptsächlich um Globale Variablen und Datenbankinteraktionen. Von daher ist das DLL konzept vielleicht nicht ganz verkehrt, es ist nur sau blöd zu debuggen, wenn mal wieder einer der Leute was hinzu gefügt hat, ohne es vorher zu testen^^

  15. Hi,

    Ich hab ein Projekt das ich normalerweise immer als DLL in andere einbinden möchte. Da sich DLLs aber über die DLL-Grenze hinweg so schlecht debuggen lässt, hab ich mir einen Modul geschrieben in dem Diverse Tests abgehandelt werden.

    Jetzt folgende Frage: kann ich in den Optionen für einen Build irgendwie festlegen das wenn dieser Spezielle Build gewählt wird, das Projekt als LIB zu behandeln ist und nicht als Consolapplication? Sonst muss ich vor jedem Compilieren, (ich mach das über ne Bat, weil bei jedem Compile automatische mehrere DLLs erstellt werden müssen) dran denken wieder von ConsoleApplication auf Lib umzustellen^^

    Gruß

    Lucas

  16. 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

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...