Picturebox vor Flowlayoutpanel

  • VB.NET

Es gibt 185 Antworten in diesem Thema. Der letzte Beitrag () ist von Schmandal.

    Achja.. seuftz...

    Wenn ich nun 2 Canvasse mit Scrollbars habe, so muss ich ja auch mit beiden Offsets arbeiten. Wie unterscheide ich das nun am besten?

    Derzeit habe ich ja im Zeichnen Sub folgende Zeile:

    VB.NET-Quellcode

    1. Dim offset = cardchooser.allcards.AutoScrollPosition


    Allerdings müsste ich ja auch vom zweiten Canvas das Offset einbringen. Leider weiß ich gerade nicht wie ich das lösen kann.

    Ich habe mir das OwnerDrawing Tut angeschaut. Allerdings funktioniert bei mir folgende Zeile NICHT:


    VB.NET-Quellcode

    1. Canvas.AutoScrollPosition


    Fehlermeldung ist: Reference to a non-shared member requires an object reference.

    Solange ich nur ein Canvas nutze, funktioniert alles wunderbar. Bei zwei Canvassen leider nicht :(.

    Schmandal schrieb:

    Fehlermeldung
    Ist Canvas der Name der Klasse oder der Name der Instanz-Variable?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo @RodFromGermany,

    ich habe die Klasse aus dem Tutorial von ErfinderDesRades übernommen und dann nur marginal verändert.

    ErfinderDesRades schrieb:

    Imports System.Collections.ObjectModel
    Imports System.Collections.Specialized
    Imports System.ComponentModel
    Imports System.Diagnostics
    <DesignerCategory("code"), DefaultEvent("Paint")> _
    Public Class Canvas : Inherits ScrollableControl


    In der Cards Klasse verwendet ErfinderDesRades dann:

    VB.NET-Quellcode

    1. Canvas.AutoScrollPosition
    Minifrage:

    Ich habe eine weitere Boolean Property den Karten hinzugefügt namens "dontshow".

    Nun zeichne ich die Karte einfach nicht, wenn der Wert true ist. Das funktioniert auch alles ganz gut. Bis darauf, dass die anderen Karten wohl dennoch gezeichnet werden und alle anderen Funktionen damit noch funktionieren.

    Ich suche eine einfache Möglichkeit die Karten nach Eigenschaften zu filtern und diese im Canvas anzuzeigen. Möglichst ohne die Karten aus dem Canvas zu removen.

    Würde mich über einen Lösungsansatz freuen.
    @Schmandal Das sollte doch ganz simpel sein.
    In einer ForEach-Schleife findest Du aus allen Karten die zu zeichnenden und übergibst jeder von diesen den aktuellen Zeichen-Offset.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany , ja danke. Das ist mir schon klar.

    Im Grunde funktioniert das auch. Allerdings scheint es mit dem Offset nicht zu klappen. Das Filtern klappt, es werden auch nur die Karten angezeigt, die ich haben möchte. Doch wenn ich vorher 60 Karten im Canvas hatte, ändert sich nichts mehr an der Scrollbar. Diese bleibt so, als würde ich noch alle Karten im Canvas haben. Das scheint auch so zu sein. Denn wenn ich nun runterscrolle und irgendwo in das Canvas klicke, scheinen die anderen Karten einfach unsichtbar gezeichnet worden zu sein :(.

    Soll ich evtl. ein bisschen Code posten oder reicht das als Erklärung? Ich denke, es ist mal wieder eine Kleinigkeit, die ich wohl übersehen habe.

    EDIT: Ach verdammt :(. An einer Stelle Invalidate vergessen. Sorry

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Schmandal“ ()