【发布时间】:2010-03-18 06:35:13
【问题描述】:
查看Jeff Van Gogh's blog 上的 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 Forum上发帖)
【问题讨论】:
标签: c# winforms system.reactive