myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und Silverlight » Mouseposition bei Click relativ zum Grid
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Mouseposition bei Click relativ zum Grid

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
SyntaxTalksToMe
myCSharp.de-Mitglied

Dabei seit: 16.08.2017
Beiträge: 15


SyntaxTalksToMe ist offline

Mouseposition bei Click relativ zum Grid

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Moin,

mein Ziel ist es, bei einem Mouseclick auf dem Grid einen Button an der Stelle wo der Mauszeiger ist zu erstellen.

Das funktioniert auch, nur leider ist der Button immer versetzt. Hier ist mal der Code:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
private void MyGrid_MouseDown(object sender, MouseButtonEventArgs e)
        {      

            System.Windows.Point mouseClickPosition = Mouse.GetPosition(myGrid);

            if (createDoorModus)
            {
                Button newDoor = new Button();
                newDoor.Width = 50;
                newDoor.Height = 35;

                newDoor.Margin = new Thickness(mouseClickPosition.X, mouseClickPosition.Y, 0,0);
                
                myGrid.Children.Add(newDoor);
            }

        }

Ich bin mir fast sicher, dass es beim festlegen der Thickness an der Right und Bottom Property liegt. Denn je weiter ich mich beim Klicken dem rechten und unteren Rand nähere, desto weniger versetzt ist der Button zum Mauszeiger.

Aber wie kann ich das umgehen? Gibts da evtl einen Trick? Ansonsten müsste ich halt die Werte über die Width und Height des Grides ausrechnen.
12.04.2019 17:19 Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.286
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die Margin hat nichts mit der Position zu tun!

In einem Grid setzt du die Position mittels Grid.SetColumn und Grid.SetRow, s.a. Beispiel bei  Grid.

Wenn du ein Element komplett frei (pixelgenau) positionieren willst, dann benötigst du ein  Canvas.
12.04.2019 17:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SyntaxTalksToMe
myCSharp.de-Mitglied

Dabei seit: 16.08.2017
Beiträge: 15

Themenstarter Thema begonnen von SyntaxTalksToMe

SyntaxTalksToMe ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja, es sollte pixelgenau sein. Zufälligerweise liegt gerade ein Canvas in dem Grid rum :)

Obwohl ich dem Canvas einen x:Name gegeben habe, kann ich nicht von außen zugreifen. Ich nehme an, ich muss dann erstmal das Canvas suchen.

Wie läuft dass dann ab über ein Canvas?
12.04.2019 18:24 Beiträge des Benutzers | zu Buddylist hinzufügen
SyntaxTalksToMe
myCSharp.de-Mitglied

Dabei seit: 16.08.2017
Beiträge: 15

Themenstarter Thema begonnen von SyntaxTalksToMe

SyntaxTalksToMe ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok läuft. Habe das Childobjekt des Grids gesucht und das als relative Fläche genommen. Jetzt passen die Koordinaten.
12.04.2019 19:17 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 3 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 24.07.2019 08:44