| |
VB.NET - Ein- und UmsteigerSelectionChanged | | | Autor: rga | Datum: 13.10.15 14:37 |
| Hallo liebes Forum,
bin neu auf VB.NET und möchte mir die Programmiersprache in einem kleinen Projekt selbst beibringen. Nun stosse ich auf ein Problem, dass ich mir nicht so richtig erklären kann.
Situation:
In einem Formular habe ich ein Register-Control mit 3 Register. Auf der zweiten Registerkarte befindet sich ein DataGridView. Dieses soll ihren DataSource jedesmal neu vom SQL-Server holen, wenn auf die besagte Registerkarte (nach einem Registerwechsel) erneut geklickt wird.
Soweit funktioniert das auch alles besten.
Was allerdings seltsam ist, ist die Tatsache, dass wenn ich das Formular zum ersten Mal starte (Registerkarte 1 ist aktiv) und ich dann auf die Registerkarte zwei klicke, mir das Ereignis SelectionChanged des DataGridView-Objekts 3x hinter einander aufgerufen wird, obwohl es höchstens 1x aufgerufen werden dürfte. Wenn ich danach die Registerkarten abwechselnd anklicke, funktionert es wie erwartet. Das Ereignis wird dann nur 1x aufgerufen.
Hier die Ereignisauswertung, wenn ein Tab angeklickt wird. Klicke ich auf das zweite Register, wird die Prozedur Update_grd_Alle_Module() aufgerufen.
Private Sub tab_Modulverwaltung_Selected(sender As Object, e As _
TabControlEventArgs) Handles tab_Modulverwaltung.Selected
Select Case tab_Modulverwaltung.SelectedIndex
Case 0 ' Registerkarte "Zuordnen"
....
....
Case 1 ' Registerkarte "Mutieren"
Call Update_grd_Alle_Module()
Case 2 ' Registerkarte "Kategorien"
....
....
End Select
End Sub In dieser Prozedur prüfe ich mit hilfe einer Messagebox, wie oft das Ereignis "SelectionChanged" des DataGridVies-Objekts augerufen wird.
Private Sub grd_Alle_Module_SelectionChanged(sender As Object, e As EventArgs) _
Handles grd_Alle_Module.SelectionChanged
If grd_Alle_Module.SelectedRows.Count <> 0 Then
MsgBox(grd_Alle_Module.Rows.Count.ToString)
End If
End Sub Mit dieser Prozedur lade ich die Daten neu in das GridView Objekt.
Private Sub Update_grd_Alle_Module()
Dim SQLcmd As New SqlCommand()
Dim DataTable As New DataTable
SQLcmd.CommandType = CommandType.Text
SQLcmd.CommandText = "SELECT * FROM dbo.View_tblModule ORDER BY" & _
"mod_kurzbez"
DataTable = SQLDB.DataTransaction(SQLcmd).Table
With grd_Alle_Module
.AllowUserToAddRows = False
.RowTemplate.Height = 18
.RowTemplate.Resizable = DataGridViewTriState.False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
.CellBorderStyle = DataGridViewCellBorderStyle.None
.RowHeadersVisible = False
.DataSource = DataTable
End With
End Sub Für mich wichtig ist eigentlich nur, dass beim laden der Daten vom SQL-Server kein Ereignis ausgelöst werden sollte, da die Daten ja korrekt vom Server in das GridView kommen und ich nicht auf Veränderung reagieren muss. Leider hat es mit dem RemoveHandler und AddHandler auch nicht wirklich geklappt.
Wenn jemand also einen Ansatzpunkt für mich hätte, wieso sich das Ereignis 3x statt nur 1x wiederholt, wäre ich dafür sehr, sehr dankbar!!
Grüsse
Roli[u][u][u][u]
Beitrag wurde zuletzt am 13.10.15 um 14:42:09 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|