gpt4 book ai didi

c# - 如何通过单击鼠标更改 wpf 中的窗口位置

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:17 25 4
gpt4 key购买 nike

我需要在单击鼠标时更改窗口的位置。这是代码。

private void Button_Click(object sender, RoutedEventArgs e)
{
for(int i=0; i<50; i++)
{
this.Top -= i;
this.Left -= i;
}
}

但是每当我运行这个程序时,只显示最后一个位置。我的意图是连续移动它直到循环结束。

最佳答案

最后我自己找到了答案。正如我所料,它工作得很好。我使用了 SynchronizationContext,它可以发布操作来更新 UI 线程上的控件。

    public partial class Splash : Window
{
SynchronizationContext sc;
System.Timers.Timer t;
double i=0;
double tempTop;
double angle = 0;
public Splash()
{
InitializeComponent();
sc=SynchronizationContext.Current;
}
private void Move(object sender, MouseEventArgs e)
{
DragMove();
}

private void btnClose_Click(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown();
}

private void btnMinim_Click(object sender, RoutedEventArgs e)
{
this.WindowState = WindowState.Minimized;
}

private void Button_Click(object sender, RoutedEventArgs e)
{

l1.Content = "Helicopter Moving";
if(t!=null)
{
t.Stop();
t.Dispose();
}
//for (double i = 0; i < 1; i += 0.05)
//{
// this.Top -= i;
// this.Left -= i;
// Thread.Sleep(100);
//}
//l1.Content = "Helicopter Stopped";
tempTop = this.Top;
t = new System.Timers.Timer();
t.Interval = 10;
t.Enabled = true;
t.Elapsed += Change;
t.Start();

}
void Change(object sender, EventArgs e)
{
if (i <= 3)
{
sc.Post(o =>
{
this.Top = tempTop * (Math.Cos(Math.PI * angle / 180));
this.Left -= i;
angle = (angle >= 360) ? 0 : ++angle;
i = i + 0.01;
}, null);
}
else
{
t.Stop();
i = i * -1;
}

}
}
}

关于c# - 如何通过单击鼠标更改 wpf 中的窗口位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com