none
Listview RRS feed

  • Frage

  • Ich versuche mir über eine Listview eine E-Mail anzuzeigen zu lassen. Mit einer Listbox geht es und mit einer

    listview bekomme ich kein ergebniss hier mein ergebnis mit der listbox

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        If Me.Controls("WebBrowser") IsNot Nothing Then
            Dim browser As Control = Me.Controls("WebBrowser")
            Me.Controls.Remove(browser)
            browser.Dispose()
        End If
        Dim newBrowserControl As New WebBrowser
        With newBrowserControl
            .Size = New Size(Me.Size.Width - 350, Me.Size.Height - 100)
            .Location = New Point(310, 40)
            .AllowNavigation = False
            .ScriptErrorsSuppressed = False
            .IsWebBrowserContextMenuEnabled = False
            .WebBrowserShortcutsEnabled = True
            .ScrollBarsEnabled = True
            .Name = "WebBrowser"
            .Anchor = AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Top
        End With
        Me.Controls.Add(newBrowserControl)
    
        For Each oneMessage As EmailMessage In _messages
            If oneMessage.From.ToString.Equals(ListBox1.SelectedItem.ToString) Then
                Me.txtFrom.Text = oneMessage.From
    
                Dim url As Uri = New System.Uri(oneMessage.CreateHTMLFile())
                newBrowserControl.Url = url
                newBrowserControl.Update()
            End If
        Next
    End Sub


    Mittwoch, 25. November 2020 17:50

Antworten

  • IMO müsste es bei einem Listview eigentlich wie folgt lauten:

    For Each oneMessage As EmailMessage In _messages
                If oneMessage.From.ToString.Equals(lvwMail.SelectedItems(0).Text) Then
                    Me.txtFrom.Text = oneMessage.From
    
                    Dim url As Uri = New System.Uri(oneMessage.CreateHTMLFile())
                    newBrowserControl.Url = url
                    newBrowserControl.Update()
                End If
            Next

    Wobei ich die Bezeichnung auch ändern würde Listbox <> Listview.

    Sonntag, 29. November 2020 09:05
  • Hi,

    LvwMail wäre die Referenz auf dein ListView Control, wenn Du das denn so benannt hast.

    ListBox1 verweist auf dein ListBox Control, Du sagtest ja aber, dass Du das mit einer ListView machen willst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Sonntag, 29. November 2020 10:26
    Moderator
  • Hallo

    Du wirst nicht drum herumkommen, dir Grundlagen beizubringen, dazu gehört auch, den grundlegenden Unterschied zwischen ListBox und ListView zu verstehen.

    Du schreibst lediglich, das du Probleme hast, auf das SelectedItem zuzugreifen. Das "befüllen" einer ListView ist aber auch ein anderer Vorgang, wie bei einer ListBox. Übrigens gibt es bei einer ListView kein "SelectedItem", es ist immer eine Collection (SelectedItems).

    Also, so wie es Stefan Falz schon schrieb: weg mit der ListBox. Und Ahmed Martens hat dir doch schon eine Lösung präsentiert..

    Und von mir auch noch ein kleines Beispiel:

        Private Sub FillListView()
    
            listView1.View = View.Details
            listView1.LabelEdit = True
            listView1.AllowColumnReorder = True
            listView1.CheckBoxes = True
            listView1.FullRowSelect = True
            'listView1.MultiSelect = False
            listView1.GridLines = True
            listView1.Sorting = SortOrder.Ascending
    
            Dim item1 As New ListViewItem("item1", 0)
            item1.Checked = True
            item1.SubItems.Add("1")
            item1.SubItems.Add("2")
            item1.SubItems.Add("3")
    
            Dim item2 As New ListViewItem("item2", 1)
            item2.SubItems.Add("4")
            item2.SubItems.Add("5")
            item2.SubItems.Add("6")
    
            Dim item3 As New ListViewItem("item3", 0)
            item3.Checked = True
            item3.SubItems.Add("7")
            item3.SubItems.Add("8")
            item3.SubItems.Add("9")
    
            listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left)
            listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left)
            listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left)
            listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center)
    
            listView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
    
        End Sub
    
        Private Sub listView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listView1.SelectedIndexChanged
    
            Dim selectedItems = listView1.SelectedItems
    
            If selectedItems.Count > 0 Then
                Me.Text = selectedItems(0).Text + "-" + selectedItems(0).SubItems(1).Text + "-" + selectedItems(0).SubItems(2).Text
            Else
                Me.Text = "Empty"
            End If
    
        End Sub

    Gruß

    Stefan Krömer


    Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP

    Montag, 30. November 2020 11:48

Alle Antworten

  • Hi,

    was genau geht denn nicht?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 26. November 2020 11:34
    Moderator
  • Hallo Danke erst eimal für die Antwort.

    Das script was ich oben habe geht nur mit eine listbox. Das heist in der listbox sind die E-Mails

    die mann erhalten hat. Beim markieren einer E_Mail wir sie im Browser angezeigt.

    Nun aber möchte ich das gleiche mit einer listview machem klappt auch soweit aber die E-Mails werden

    nicht im Browser angezeigt wenn ich auf einer E-Mail klicke.


    Samstag, 28. November 2020 09:48
  • die E-Mails werden nicht im Browser angezeigt wenn ich auf einer E-Mail klicke.

    und was passiert ansonsten? Kommt eine Fehlermeldung? Falls ja, welche? (Bitte die exakte und vollständige Fehlermeldung inkl. der Codezeile, die den Fehler auslöst, posten)

    Wie sieht der Code für deinen Versuch mit der ListView aus? Genauso wie Du das ListBox Ereignis SelectedIndexChanged für die Anzeige gewählt hast musst Du dir das passende Ereignis aus der ListView raussuchen und den Code dann dort hinterlegen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Samstag, 28. November 2020 16:31
    Moderator
  • Es kommt keine Fehlermeldung es zeigt die E-Mail nicht an

    Ich denk mal es liegt an dieses hier

    For Each oneMessage As EmailMessage In _messages
            If oneMessage.From.ToString.Equals(ListBox1.SelectedItem.ToString) Then
                Me.txtFrom.Text = oneMessage.From
    
                Dim url As Uri = New System.Uri(oneMessage.CreateHTMLFile())
                newBrowserControl.Url = url
                newBrowserControl.Update()
            End If
        Next

    Samstag, 28. November 2020 17:56
  • Das ist der script nach dem ich die Listview erstellt habe sie hat auch Den namen ListBox1

    For Each oneMessage As EmailMessage In _messages
                If oneMessage.From.ToString.Equals(ListBox1.SelectedItem.ToString) Then
                    Me.txtFrom.Text = oneMessage.From

                    Dim url As Uri = New System.Uri(oneMessage.CreateHTMLFile())
                    newBrowserControl.Url = url
                    newBrowserControl.Update()
                End If
            Next

    ListBox1.SelectedItem.ToString ist der Fehler und ListBox1.SelectedIndices.ToString) /ListBox1.SelectedItems.ToString gehen auch nicht Danke

    Samstag, 28. November 2020 18:17
  • IMO müsste es bei einem Listview eigentlich wie folgt lauten:

    For Each oneMessage As EmailMessage In _messages
                If oneMessage.From.ToString.Equals(lvwMail.SelectedItems(0).Text) Then
                    Me.txtFrom.Text = oneMessage.From
    
                    Dim url As Uri = New System.Uri(oneMessage.CreateHTMLFile())
                    newBrowserControl.Url = url
                    newBrowserControl.Update()
                End If
            Next

    Wobei ich die Bezeichnung auch ändern würde Listbox <> Listview.

    Sonntag, 29. November 2020 09:05
  • Danke ersteimal für die Mühe.

    woher kommt denn das

    lvwMail

    Muss das nicht

    (ListBox1.SelectedItems(0).Text) sein????

    Oder muss ich es umbenennen

    Sonntag, 29. November 2020 09:44
  • Hi,

    LvwMail wäre die Referenz auf dein ListView Control, wenn Du das denn so benannt hast.

    ListBox1 verweist auf dein ListBox Control, Du sagtest ja aber, dass Du das mit einer ListView machen willst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Sonntag, 29. November 2020 10:26
    Moderator
  • Hallo ich schick dir mal ein paar Bilder mit.

    das erste ist mit der listbox

    das zweite ist mit eine listview

     Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            If Me.Controls("WebBrowser") IsNot Nothing Then
                Dim browser As Control = Me.Controls("WebBrowser")
                Me.Controls.Remove(browser)
                browser.Dispose()
            End If
            Dim newBrowserControl As New WebBrowser
            With newBrowserControl
                .Size = New Size(Me.Size.Width - 350, Me.Size.Height - 100)
                .Location = New Point(310, 40)
                .AllowNavigation = False
                .ScriptErrorsSuppressed = False
                .IsWebBrowserContextMenuEnabled = False
                .WebBrowserShortcutsEnabled = True
                .ScrollBarsEnabled = True
                .Name = "WebBrowser"
                .Anchor = AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Top
            End With
            Me.Controls.Add(newBrowserControl)
    
            For Each oneMessage As EmailMessage In _messages
                If oneMessage.From.ToString.Equals(ListBox1.SelectedItem.ToString) Then
                    Me.txtFrom.Text = oneMessage.From
    
                    Dim url As Uri = New System.Uri(oneMessage.CreateHTMLFile())
                    newBrowserControl.Url = url
                    newBrowserControl.Update()
                End If
            Next
        End Sub
    Vieleicht stimmt etwas mit dem
    Private Sub ListBox1_SelectedIndexChanged
    nicht

    Sonntag, 29. November 2020 14:27
  • Bilder mit schicken geht nicht
    Sonntag, 29. November 2020 14:31
  • Hi,

    was willst Du laufend mit der ListBox?

    Du schreibst doch, Du willst es mit einer ListView machen. Dann schmeiß die ListBox komplett raus und bau eine ListView ein. So kommst Du (und wir auch) nur komplett durcheinander, weil Du irgendwelche Codeteile, die gar nichts miteinander zu tun haben, miteinander verbinden willst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 30. November 2020 08:54
    Moderator
  • Hallo

    Du wirst nicht drum herumkommen, dir Grundlagen beizubringen, dazu gehört auch, den grundlegenden Unterschied zwischen ListBox und ListView zu verstehen.

    Du schreibst lediglich, das du Probleme hast, auf das SelectedItem zuzugreifen. Das "befüllen" einer ListView ist aber auch ein anderer Vorgang, wie bei einer ListBox. Übrigens gibt es bei einer ListView kein "SelectedItem", es ist immer eine Collection (SelectedItems).

    Also, so wie es Stefan Falz schon schrieb: weg mit der ListBox. Und Ahmed Martens hat dir doch schon eine Lösung präsentiert..

    Und von mir auch noch ein kleines Beispiel:

        Private Sub FillListView()
    
            listView1.View = View.Details
            listView1.LabelEdit = True
            listView1.AllowColumnReorder = True
            listView1.CheckBoxes = True
            listView1.FullRowSelect = True
            'listView1.MultiSelect = False
            listView1.GridLines = True
            listView1.Sorting = SortOrder.Ascending
    
            Dim item1 As New ListViewItem("item1", 0)
            item1.Checked = True
            item1.SubItems.Add("1")
            item1.SubItems.Add("2")
            item1.SubItems.Add("3")
    
            Dim item2 As New ListViewItem("item2", 1)
            item2.SubItems.Add("4")
            item2.SubItems.Add("5")
            item2.SubItems.Add("6")
    
            Dim item3 As New ListViewItem("item3", 0)
            item3.Checked = True
            item3.SubItems.Add("7")
            item3.SubItems.Add("8")
            item3.SubItems.Add("9")
    
            listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left)
            listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left)
            listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left)
            listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center)
    
            listView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
    
        End Sub
    
        Private Sub listView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listView1.SelectedIndexChanged
    
            Dim selectedItems = listView1.SelectedItems
    
            If selectedItems.Count > 0 Then
                Me.Text = selectedItems(0).Text + "-" + selectedItems(0).SubItems(1).Text + "-" + selectedItems(0).SubItems(2).Text
            Else
                Me.Text = "Empty"
            End If
    
        End Sub

    Gruß

    Stefan Krömer


    Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP

    Montag, 30. November 2020 11:48
  • Danke ich werde mich bemühen bis danne
    Montag, 30. November 2020 18:31