Listview.Columns(0).Name bleibt leer

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von newbie.

    Listview.Columns(0).Name bleibt leer

    Hallo Spezis,

    der Titel sollte schon aufschluss darauf geben was ich fragen möchte.

    VB.NET-Quellcode

    1. If ctrl.GetType().Equals(GetType(ListView)) Then
    2. Dim lw As New ListView
    3. lw = DirectCast(ctrl, ListView)
    4. For i As Integer = 0 To lw.Columns().Count - 1
    5. MsgBox(lw.Columns(i).Text & vbCrLf & lw.Columns(i).Name)
    6. 'Da es sich um 3 Spalten handelt kommen 3 mal MsgBoxen:
    7. 'MsgBox 1:
    8. '"Spalte 1"
    9. '" "
    10. 'MsgBox 2:
    11. '"Spalte 2"
    12. '" "
    13. 'MsgBox 3:
    14. '"Spalte 3"
    15. '" "
    16. Next
    17. End If


    Kann mir das jemand vielleicht erklären bitte?
    Warum bleibt der Name leer?
    Im Anhang ist ein screenshot mit der Listview.
    Bilder
    • ListView.JPG

      63,23 kB, 654×622, 158 mal angesehen
    Hi,
    das ist ein bekannter Bug des Designers. Wenn du wirklich über die .Name Eigenschaft den Namen bekommen möchtest, musst du in den Designer Coder der Form gehen und diesen dort selbst reinschreiben.
    Du solltest das in etwa folgende Zeile finden:

    VB.NET-Quellcode

    1. '
    2. 'ColumnHeader1
    3. '
    4. Me.ColumnHeader1.Text = "ColumnHeader1"
    5. Me.ColumnHeader1.Name= "ColumnHeader1" '<---- Diese selbst hinzufügen.
    6. '


    Alternativ kannst du aber auch die .Tag Eigenschaft nehmen und dort deinen gewünschten Namen rein schreiben.

    Mfg
    Conway's Game Of Life Monogame Sample: 80%

    Conway's Game Of Life Monogame Sample
    Hi,

    newbie schrieb:

    Kann mir das jemand vielleicht erklären bitte?

    TheTrust3343 schrieb:

    das ist ein bekannter Bug des Designers.

    OK, jetzt ist es mir auch bekannt ^^


    newbie schrieb:

    Warum bleibt der Name leer?

    TheTrust3343 schrieb:

    Wenn du wirklich über die .Name Eigenschaft den Namen bekommen möchtest, musst du in den Designer Coder der Form gehen und diesen dort selbst reinschreiben.

    Punktlandung :thumbsup: Danke


    ErfinderDesRades schrieb:

    keine Ahnung. Aber nach meiner Erfahrung braucht man die Name-Property eines Controls eh nie. Wozu meinst du sie zu brauchen?

    Es gibt nun mal Controls die man nehmen kann, weil diese im Werzeugkasten angeboten werden...ich erlaube mir mal...du würdest mir höchst wahrscheinlich eine DataGridView empfehlen / vorziehen. Was ich auch in den neueren Projekten ausschließlich benutze, gerade wenn man Daten aus einer DB holt und verarbeitet.
    Da es sich um ein älteres Projekt von mir handelt, wo halt mehrere ListView controls zum Einsatz kamen (wie es mein Nick schon sagt: "newbie", keine Erfahrung gehabt), wollte ich nicht alles umbauen (Zeitmangel, traue mich nicht (nach dem Motto: "never touch a running system")).
    Ich hatte zwar eine Ersatzlösung gefunden, aber Name-Property ist nun mal besser, weil es Designerweit eindeutig ist, wenn man genau nur diese Spalte von egal welchem ListView sucht/braucht. Der Zweck, das Projekt wird auf Multilanguage erweitert.

    Vielen Dank für eure Hilfe.

    newbie schrieb:

    Name-Property ist nun mal besser, weil es Designerweit eindeutig ist
    das stimmt so nicht ganz.
    Also wenn der Designer iwo Name-Properties einträgt, dann macht er die durchaus eindeutig, aber händisch in ListViewColumn-Objekte eingetragene Name-Properties müssen nur in diesem Listview eindeutig sein. Bei mehreren Listviews auffm Form ist das nicht mehr ganz so eindeutig.

    ErfinderDesRades schrieb:

    Bei mehreren Listviews auffm Form ist das nicht mehr ganz so eindeutig.


    ja, du hast natürlich Recht. :thumbup:
    Für den Fall habe ich die Namen der Spalten nach den ListView Namen vergeben.

    Z.B.: lwUser, lwAuftrag und lwPlanung etc. und die Spalten bekommen eben die lw Namen vorangestellt. Die Eindeutigkeit mache ich tatsächlich manuell (bei mehreren ListView controls auf einer Form).

    Wie auch immer, Hauptsache, es funtzt wie es soll.
    Vielen Dank nochmal.