Laden...

MouseMove und DragMove Problem

Erstellt von alexanderschill vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.172 Views
A
alexanderschill Themenstarter:in
52 Beiträge seit 2011
vor 10 Jahren
MouseMove und DragMove Problem

Hey liebes Forum ich hab ein Problem und dies plagt mcih jetzt schon einige Tage und zwar möchte ich meine Borderless Form per dragMove bewegen das funktioniert auch super nur hab ich jetzt das problem dass absolut überall die maus getrackt wird

beispielsweise hab ich selebr eine Trackbar programmiert, welche auch mit Mosuemove arbeitet nur funktioniert eben diese nicht sondern das fenster bewegt sich hier mal mein code:


private void Window_MouseMove(object sender, MouseEventArgs e)
        {
            if(e.LeftButton==MouseButtonState.Pressed && this.Tag==0)
            DragMove();
        }

        private void MAIN_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            MAIN.CaptureMouse();
        }

        private void MAIN_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            MAIN.ReleaseMouseCapture();
        }

         private void VOLUMEBAR_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            VOLUMEBAR.CaptureMouse();
            this.Tag = VOLUMEBAR;
        }

        private void VOLUMEBAR_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            VOLUMEBAR.ReleaseMouseCapture();
            this.Tag = null;
        }

        private void VOLUMEBAR_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                VOLUME = (float)(Mouse.GetPosition(VOLUMEBAR).X / VOLUMEBAR.ActualWidth);
                RecalcVolume();
            }
        }


Ich hab nahezu alle möglichkeiten ausprobiert die mir in den sinn kamen ich ahbe sogar die tagvariable des Windows auf das Control gelegt auf dem mousedown ausgelöst wurde komsicherweise geht selbst dass nicht ich hoffe jemand kann mir helfen

Gruß Alexander Schill

771 Beiträge seit 2009
vor 10 Jahren

Hi,

so ganz kann ich deiner Beschreibung nicht folgen, aber hast du schon mal die Handled-Eigenschaft ausprobiert:


        private void VOLUMEBAR_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            e.Handled = true;

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                VOLUME = (float)(Mouse.GetPosition(VOLUMEBAR).X / VOLUMEBAR.ActualWidth);
                RecalcVolume();
            }
        }

A
alexanderschill Themenstarter:in
52 Beiträge seit 2011
vor 10 Jahren

e.Handeld ist immer unterschiedlich also leider geht das auch nicht 😦 selbst wenn ich in dem previewmousemove e.handled auf true setzte ist es in window mousemove trotzdem false

Gruß Alexander Schill

771 Beiträge seit 2009
vor 10 Jahren

Das ist aber sehr eigenartig, d.h. er landet im Window_MouseMove, obwohl im VOLUMEBAR_PreviewMouseMove e.Handled auf true gesetzt ist?
Wie hast du die Events denn registriert?

A
alexanderschill Themenstarter:in
52 Beiträge seit 2011
vor 10 Jahren

Per XAML Trigger also so

<Grid Name="VOLUMEBAR" Grid.Row="1" Margin="10,4" PreviewMouseLeftButtonDown="VOLUMEBAR_PreviewMouseLeftButtonDown" PreviewMouseLeftButtonUp="VOLUMEBAR_PreviewMouseLeftButtonUp" PreviewMouseMove="VOLUMEBAR_PreviewMouseMove">
                

Gruß Alexander Schill