查看Jeff Van Gogh 博客上的 Reactive Extensions for javascript 演示,我想我会在 C#/Winforms 中尝试一下,但它似乎不太好用。
我只是将它放入表单的构造函数中(安装并引用了 Rx 框架):
Observable.Context = SynchronizationContext.Current;
var mousemove = Observable.FromEvent<MouseEventArgs>(this, "MouseMove");
var message = "Time flies like an arrow".ToCharArray();
for(int i = 0; i < message.Length; i++)
{
var l = new Label()
{
Text = message[i].ToString(),
AutoSize = true,
TextAlign = ContentAlignment.MiddleCenter
};
int closure = i;
mousemove
.Delay(closure * 150)
.Subscribe(e =>
{
l.Left = e.EventArgs.X + closure * 15 + 10;
l.Top = e.EventArgs.Y;
//Debug.WriteLine(l.Text);
});
Controls.Add(l);
}
当我移动鼠标时,字母似乎以随机顺序移动,如果我取消注释 Debug 行,我会看到同一个字母的多个事件......
有任何想法吗?我试过Throttle,但它似乎没有任何区别。我是否只是要求过多的 WinForms 来移动所有这些标签?
(交叉张贴在Rx 论坛上)