vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Laufzeit erstellter ListtView Befüllen 
Autor: Manfred X
Datum: 28.09.13 18:45

Einfach das MouseDown-Event nutzen.
(Für alle Events eines Control können Handler definiert werden).

'Hier die Zuordnung
AddHandler lv.MouseDown, AddressOf ListViews_MouseDown
 
'der Handler
Private Sub ListViews_MouseDown(sender As Object, e As _
  System.Windows.Forms.MouseEventArgs)
   .......
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Laufzeit erstellter ListtView Befüllen 
Autor: dj.tommy
Datum: 28.09.13 17:19

Hallo Leute!
Ich versuche für ein Bekannten ein Programm zu schreiben, so das man mit ListView im Laufzeit erstellen kann, was kein Problem ist.
So sieht man der erste Code aus:
Public Class Form1
    Private WithEvents LV As ListView
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
        For i As Integer = 0 To 4
            Dim LV = New ListView()
 
            With LV
                LV.Items.Add(i + 1)
                '.Text = i + 1
                .Left = 100
                .Height = 30
                .Top = 10 + (30 * i)
            End With
 
            AddHandler LV.Click, AddressOf LV_Click
            AddHandler LV.DoubleClick, AddressOf LV_DoubleClick
            Me.Controls.Add(LV)
        Next
    End Sub
 
    Private Sub LV_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim lText As String = DirectCast(sender, ListView).FocusedItem.Text
        MsgBox(lText)
    End Sub
 
    Private Sub LV_DoubleClick(ByVal sender As Object, ByVal e As _
      System.EventArgs)
               MsgBox("Doppelklick")
    End Sub
Ich weiss nur wie mann Text auslesen kann:
    Private Sub LV_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim lText As String = DirectCast(sender, ListView).FocusedItem.Text
        MsgBox(lText)
    End Sub
Nun die genaue frage:
Angenommen man erstellt 2 Listview, wie kann ich es Herausfinden welche ListView angeklickt wurde und wie Man es befüllt?

Und ist es irgendwie möglich das man das Herausgefundene Listview in einem variable übergibt so das man es so schreiben kann?
Dim Lv as <-- übermittelte ListView 
MsgBox(Lv.Items(Lv.FocusedItem.Index).Text)
Danke im Vorraus für die Hilfe
DjTommy
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Laufzeit erstellter ListtView Befüllen 
Autor: Manfred X
Datum: 28.09.13 17:28

Hallo!

Du kannst verschiedene Handler für die Listviews erstellen.

Oder, wie in Deinem Code schon verwendet, kannst Du über den
Sender-Parameter eine Referenz auf das Listview bekommen.
Dim LV as ListView = CType(Sender, ListView)

Der Zugriff über die Controls-Auflistung ist ebenfalls möglich.

Du kannst beim Erstellen mehrerer Listviews auch eine List(of ListView) benutzen
und die dynamisch erstellten ListView-Instanzen per ADD-Methode dort anhängen.
Der Zugriff auf ein LV ist dann z.B. über den Listenindex möglich.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Laufzeit erstellter ListtView Befüllen 
Autor: dj.tommy
Datum: 28.09.13 17:49

Hallo Manfred!
Danke für deine Hilfe.
Nur was du mir da schreibst ist für mich Neuland
Kannst du mir mal ein Beispiel geben?

Vielen Dank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Laufzeit erstellter ListtView Befüllen 
Autor: Manfred X
Datum: 28.09.13 18:04

Public Class frmListViews
 
    Dim myListViews As New List(Of ListView)
 
    Private Sub frmListViews_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        Me.Height = 650 : Me.Width = 400
 
        Dim lvh As Integer = 150
        Dim lvw As Integer = 300
 
        'Listviews erstellen
        For i As Integer = 0 To 3
            Dim lv As New ListView
            With lv
                .Height = lvh : .Width = lvw
                .Top = i * (lvh + 10) : .Left = 10
                .Tag = CStr(i) 'Kennung für Zugriff
                .Items.Add("Listview" & cstr(i))
                .View = View.Details
                .Columns.Add("Information", 200)
            End With
 
            AddHandler lv.Click, AddressOf ListViews_Click
 
            'Listview auflisten
            myListViews.Add(lv)
            Me.Controls.Add(lv)
        Next i
 
    End Sub
 
    Private Sub ListViews_Click(sender As Object, e As System.EventArgs)
 
        Dim lv As ListView = CType(sender, ListView) 'Referenz
 
        Dim kennung As Integer = CInt(lv.Tag)   'Identifikation
 
        lv.Items(0).Text = "Ich bin angeclickt worden" 'Zugriff
 
        'alternativer Zugriff per Liste
        myListViews(kennung).Items.Add("Listenzugriff erfolgt")
 
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Laufzeit erstellter ListtView Befüllen 
Autor: dj.tommy
Datum: 28.09.13 18:38

Danke für deine hilfe
eine letzte frage habe ich leider noch es geht um Event.
die Listview klick events wird jetzt so aufgebaut:
Private Sub ListViews_Click(sender As Object, e As System.EventArgs)
Nun wenn ich die Spalte bearbeiten möchte setzte ich den textbox mit den koordinaten
LV.HitTest(e.X, e.Y)
nun mit "e As System.EventArgs" funktioniert es nicht sondern nur mit " e As System.Windows.Forms.MouseEventArgs".
Leider kommt eine Fehlermeldung:"Das Objekt des Typs "System.EventArgs" kann nicht in Typ "System.Windows.Forms.MouseEventArgs" umgewandelt werden."
wie kann ich das problemlösen, das ich e.y und e.x bekomme?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Laufzeit erstellter ListtView Befüllen 
Autor: dj.tommy
Datum: 28.09.13 18:52

Ah ok der Fehler ist MouseDown statt Click
Tztzt das mir das nicht selbst aufgefallen ist.
Danke für Alles
Ich wünsche dir und alle anderen schönen Abend
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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