Ich habe eine Zeichenfläche zur Laufzeit erstellt und Ereignishandler für Mausoperationen zugewiesen und es hat gut funktioniert. Ich entschied dann, dass ich eine Grenze um ihn herum haben wollte, und schuf so eine Grenze, die die Arbeiter davon abhielt zu arbeiten.C# Laufzeitgrenze um Raster verhindert Mausereignisbehandlung
Was habe ich versucht:
- Ich habe die Grenze und die Daumen Objekte als Kommentar gekennzeichnet. Die Zeichenfläche ist gut gezeichnet und die Ereignisbehandlung funktioniert.
- Ich entfernte dann die angehängten Event-Handler von obj und fügte die Event-Handler an die Grenzereignisse an, aber die Events feuern nur, wenn Sie direkt auf den Rand klicken, nicht darin.
- Ich habe versucht, die Preview und Preview-Ereignisse auf der Leinwand und der Grenze.
- Anbringen Event-Handler für beide Elemente
obj_MouseLeftButtonDown ruft nur ein Meldungsfeld, so kann ich alles testen. Würde jemand wissen, warum ich die Ereignisse nicht auf der Leinwand auslösen kann?
if (sender is Canvas)
{
Canvas obj = new Canvas();
obj.Name = "Container"+Objcount;
obj.Height = 100;
obj.Width = 100;
obj.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(obj_MouseLeftButtonDown);
obj.PreviewMouseLeftButtonUp += new MouseButtonEventHandler(obj_MouseLeftButtonUp);
obj.PreviewMouseMove += new MouseEventHandler(dragaround);
Border Border1 = new Border();
Border1.BorderThickness = new Thickness(5);
Border1.BorderBrush = Brushes.Gray;
Border1.Child = obj;
desk.Children.Add(Border1);
Thumb obj1 = new Thumb();
obj1.Name = "Thumb" + Objcount;
Canvas.SetRight(obj1, 0);
Canvas.SetBottom(obj1, 0);
obj1.DragDelta += new DragDeltaEventHandler(myThumb_DragDelta);
obj.Children.Add(obj1);
++Objcount;
}
Wahrscheinlich jetzt sollten Sie Ereignishandler BEIDE Grenze und Leinwand anhängen –
Ich wusste, dass ich etwas verlassen würde! Ja, ich habe Handler zu den Veranstaltungen für beide ohne Erfolg hinzugefügt, aber danke für Ihren Vorschlag. Es ist, als ob die Grenze aus zwei Elementen besteht und eines transparent ist, das über dem Randelement sitzt. Ich werde weiter nachforschen, danke. – RedChair
versuchen Sie, den Schreibtisch desktop.children hinzuzufügen, nicht auf der Leinwand. Wenn alles andere fehlschlägt, kannst du immer das border \ rectangle auf der Leinwand manuell zeichnen: d –