C# 水平移动控件
我有一个按钮列表包装在stackpanel中,水平堆叠。我想知道C#中的代码,以便应用动画,如果我的鼠标靠近主窗口的左端,按钮将缓慢向右移动。然而,如果我的鼠标靠近主窗口的右侧,按钮会慢慢向左移动C# 水平移动控件,c#,wpf,animation,controls,storyboard,C#,Wpf,Animation,Controls,Storyboard,我有一个按钮列表包装在stackpanel中,水平堆叠。我想知道C#中的代码,以便应用动画,如果我的鼠标靠近主窗口的左端,按钮将缓慢向右移动。然而,如果我的鼠标靠近主窗口的右侧,按钮会慢慢向左移动 按钮在运行时添加并设置样式。如果您可以使用画布而不是堆栈面板,您可以使用此代码立即实现我为您编写的动画: 在类中声明一个字段,如下所示:private bool\u running=true 在此之后,您可以使用此设置按钮的动画 new Thread(() => {
按钮在运行时添加并设置样式。如果您可以使用
画布
而不是堆栈面板
,您可以使用此代码立即实现我为您编写的动画:
在类中声明一个字段,如下所示:private bool\u running=true代码>
在此之后,您可以使用此设置按钮的动画
new Thread(() =>
{
while (_running)
{
Thread.Sleep(20);
canvas.Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() =>
{
var position = Mouse.GetPosition(canvas).X;
var canvasWidth = canvas.ActualWidth;
if (position >=0 && position < 10.0d)
btn.SetValue(Canvas.LeftProperty, (double)btn.GetValue(Canvas.LeftProperty) + 1);
if (position <= canvasWidth && position > canvasWidth - 10.0d)
btn.SetValue(Canvas.LeftProperty, (double)btn.GetValue(Canvas.LeftProperty) - 1);
}));
}
}).Start();
如果您想让代码使用不止一个按钮,只需使用一个列表,然后稍微重写代码。同时根据您的需要调整线程。睡眠(20)
祝你好运。到目前为止你都试过什么?我会在窗口上使用鼠标事件来捕捉位置。如果鼠标在你想要的地方,你可以滚动。是的,我可以做所有这些。只要给我一个关于如何使用故事板将控件水平移动到右边的片段就行了。移动stackpanel本身是否可以接受?stackpanel包含在什么内容中?
using System.Threading;
using System.Windows.Threading;