PropertyGrid und Refresh bei MouseMove



  • Hallo

    Ich habe ein Panel und immer wenn die Maus bewegt wird, soll ein PropertyGrid "refresht" werden. Vom Code her ist das auch kein Problem, aber wenn ich das so mache, dann hängt die komplette Anwendung und das Panel wird nicht mehr neu gezeichnet. Gibt es da ein bekanntes Problem oder stell ich mich nur blöd an?

    Code:

    private void mapPreview_MouseMove(object sender, MouseEventArgs e)
            {
                helpRec.Update(e, tileMapToSave);
    
                int x = 1;
                int y = 1;
    
                if (isMapOpen)
                {
    
                    tileProperties.Height = previewTiles[x][y].Height;
                    tileProperties.Width = previewTiles[x][y].Width;
                    tileProperties.CountSprites = previewTiles[x][y].ImagesToDraw.Count;
                    tileProperties.IsWalkable = previewTiles[x][y].IsWalkable;
                    tileProperties.PosXInTiles = x;
                    tileProperties.PosYInTiles = y;
                    tileProperties.PosXAbsolut = x * tileMapToSave.Width;
                    tileProperties.PosYAbsolut = y * tileMapToSave.Height;
                    foreach (TileImage img in previewTiles[x][y].ImagesToDraw)
                    {
                        tileProperties.LoadPathes.Add(img.LoadPath);
                    }
                }
                else
                    tileProperties.ResetProperties();
    
             mapPreview.Invalidate();
             propertyGridTileProperties.Refresh();
    
            }
    

    Natürlich wird x und y eigentlich immer wieder neu berechnet, aber das habe ich jetzt mal rausgeschmissen. Auch bei diesem Code wird also immer nur dann neu gezeichnet, wenn ich mit der Maus das Panel verlasse.

    chrische



  • Wozu brauchst du ein Refresh beim Propertygrid? Soviel ich weiß aktualisiert er sich immer neu. Wozu in das Mausmove event?



  • Hallo

    Also bei mir wird die Anzeige nur aktualisiert, wenn ich die Funktion Refresh() aufrufe. Ich brauche das ganze in der Mousemove-Funktion, weil sich eben abhängig von der Mausposition der Inhalt des Grids ändert.

    chrische



  • Hallo

    Hat denn keiner eine Idee? Das dass SelectObject von propertyGridTileProperties
    tileProperties ist, muss ich nicht extra erwähnen, oder?

    chrische



  • Hallo

    Da hier keiner eine Idee zu haben scheint, werde ich das ganze noch einmal bei mycsharp.de vorstellen. Vielleicht weiß dort jemand Rat.

    chrische



  • Wenn Du ein Refresh für das Grid ausführst, wird das MouseMove des Panels erneut ausgelöst. Du rennst damit durch eine Routine durch die sehr aufwendig ist. (Per Reflection Daten holen, Daten laden etc.)

    Das Panel bekommt gar nicht die Zeit sich neu zu zeichnen.

    http://rothmichael.de/cpp/PropertyGridRefresh.zip << Experimentiercode mit Panels und PropertyGrid als Source

    Da hier keiner eine Idee zu haben scheint, werde ich das ganze noch einmal bei mycsharp.de vorstellen. Vielleicht weiß dort jemand Rat.

    Bitte bedenke das dies hier ein Forum ist, kein Kommerzieller Support der rund um die Uhr da ist um irgendwelche Probleme zu lösen. Das was oben steht hätte man durchaus auch selbst herausfinden können, ich habe mir dazu das kleine Beispiel gebastelt. Damit bleibt zwar immer noch die Frage warum das PropertyGrid mit Refresh dafür sorgt, das MouseMove erneut aufgerufen wird (ein schneller Blick auf den Stacktrace verriet dies nicht) offen, jedoch muss man sich die Frage stellen ob ein PropertyGrid für die AUfgabe das richtige Control ist um die Änderungen anzuzeigen. Hier ist es wohl angebrachter die Daten auf eigenem Wege ohne Reflektion auszugeben.



  • Hallo

    Knuddlbaer schrieb:

    Wenn Du ein Refresh für das Grid ausführst, wird das MouseMove des Panels erneut ausgelöst. Du rennst damit durch eine Routine durch die sehr aufwendig ist. (Per Reflection Daten holen, Daten laden etc.)

    Das Panel bekommt gar nicht die Zeit sich neu zu zeichnen.

    http://rothmichael.de/cpp/PropertyGridRefresh.zip << Experimentiercode mit Panels und PropertyGrid als Source

    Erstmal danke für deine Mühe. Warum dann noch einmal MouseMove aufgerufen wird, ist mir allerdings ein Rätsel.

    Knuddlbaer schrieb:

    Da hier keiner eine Idee zu haben scheint, werde ich das ganze noch einmal bei mycsharp.de vorstellen. Vielleicht weiß dort jemand Rat.

    Bitte bedenke das dies hier ein Forum ist, kein Kommerzieller Support der rund um die Uhr da ist um irgendwelche Probleme zu lösen.

    Ich wollte damit nur Ärger wegen Crossposting vorbeugen und es sollte keinerlei Ermahnung sein. Ich weiß, dass hier keiner verpflichtet ist zu helfen.

    Danke

    chrische


Anmelden zum Antworten