看着Jeff Van Gogh's blog上的JavaScript演示的反應式擴展,我想我會嘗試在C#/ Winforms中,但它似乎並沒有工作得很好。時間飛得像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)
你試過WPF ? – jrista 2010-03-18 06:38:38
@jrista:尚未 – Benjol 2010-03-18 08:59:59