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
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();
}
}
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
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?
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