2009-03-17 12 views
0

Ich schreibe eine benutzerdefinierte DataGridView Zellklasse, die ein Steuerelement hostet. Ich höre auf das Invalidated Ereignis, um zu wissen, ob ich die Zelle neu positionieren und neu streichen sollte, aber ich bekomme Schleifen, weil die Neupositionierung der Zelle andere gehostete Zellen ungültig machen kann, die dann die erste ungültig machen und so weiter. Ich möchte kein statisches Element verwenden, um Schleifen zu vermeiden, weil dadurch Schleifen, die durch ähnliche aber nicht verwandte Zellklassen verursacht werden, nicht verhindert werden, wenn sie jemals zusammen verwendet wurden. Also muss ich überprüfen, ob das Gitter gerade ungültig ist. Wie mache ich das?Wie finde ich heraus, ob ein Steuerelement gerade ungültig ist?

Antwort

0

Es klingt, als ob Sie das Paint-Member der DataGridViewCell-Klasse überschreiben möchten, anstatt zu versuchen, auf invalidierte Ereignisse zu warten und darauf zu reagieren. Die Basisklasse übernimmt das für Sie und stellt die Grafikobjekt- und Standortinformationen direkt der Paint-Methode zur Verfügung.

+0

Ich würde gerne, aber wenn ich keine Antwort für http://StackOverflow.com/questions/654330/can-i-have-an-offscreen-control bekomme ich bin mit der Synchronisierung der Position des Steuerelements stecken . – Simon

1

Sie sollten dem ungültigen Ereignis nicht "zuhören" müssen. Wenn ein Benutzersteuerelement ungültig wird, wird onpaint automatisch aufgerufen.

Möglicherweise gibt es einen besseren Weg, um Ihr ultimatives Problem zu lösen (beim Malen Ihrer benutzerdefinierten Datagridview). Sie könnten versuchen, eine detaillierte Frage zu Ihrer Implementierung zu stellen und nach einigen Ideen zu fragen, wie Sie vorgehen könnten, so dass Sie diese (scheinbar seltsamen) Probleme nicht umgehen müssten.

+0

Bereits did - http://stackoverflow.com/questions/225972/how-doi-host-a-control-in-a-datagridviewcell-for-displaying-as-well-as-editing - bekam eine Antwort, was falsch war. – Simon