Ich habe drei Interfaces deklariert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| public interface QuinControl { ... } public interface QuinDynamicControl : QuinControl { ... } public interface QuinSensitiveControl : QuinDynamicControl { ... } |
Und nun eine Basisklasse, die unter anderem diese Interfaces implementiert:
C#-Quelltext
1: 2: 3: 4:
| public class QuinDynamicControlV : QuinControlV, QuinDynamicControl, QuinSensitiveControl, ... { ... } |
Und mehrere Kindklassen, die von dieser Basisklasse ableiten.
Außerdem habe ich eine Klasse für Container.
Dieser Container enthält Objekte, die alle QuinControl implementieren, teilweise auch QuinDynamicControl und QuinSensitiveControl.
Nun müssen einige Methoden der Containerklasse feststellen, ob ein bestimmtes Objekt auch QinDynamicControl implementert.
Das funtioniert mit dem Is-Operator auch ganz super.
Nun habe ich dort an einer Stelle auch ein Objekt, dass ganz sicher QuinDynamicControl implementiert, ich aber wissen muss, ob es auch QuinSensitiveControl implementiert.
Das frage ich ebenfalls mit Is ab.
Nun liefert mir Is an dieser Stelle aber leider immer false zurück.
Wenn ich diese Abfrage im FormLoad oder ButtonClick vornehme, bekomme ich das richtige Ergebnis (true).
Nur in dieser einen Methode nicht.
Hat jemand irgendeine Idee, was hier falsch laufen könnte?
[edit]
Irgendetwas geht hier nicht mit rechten Dingen zu sich...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if (hovered != null) { MessageBox.Show((hovered == null).ToString()); MessageBox.Show(hovered.Name); MessageBox.Show((hovered == null).ToString()); if (hovered.IsSensitive()) hovered.AsSensitive().MouseDown(e.X - hovered.Left, e.Y - hovered.Top); } |
Das soll mal einer verstehen ...
Ist hovered jetzt == null oder != null?
Nein, ich benutze keine Threads.
Und nein, ich gebe nirgendwo von Hand Objekte frei.