2008-11-19 56 views
1

我們在Silverlight 2應用程序中使用彈出窗口;這些可以通過點擊標題欄並拖動來以標準方式移動。如果標題欄被拖出瀏覽器鑲邊後的網站,則不能再移動該窗口。移動Silverlight 2彈出窗口

我們有用戶認爲這有問題,我想知道是否有其他方式可以讓窗口被移動,當他們被困在鉻後面。

或者,也許一種方法來防止彈出窗口的任何部分走出窗口會更好。

回答

1

挖掘了一下後,我發現沒有標準的彈出窗口拖動機制,但是一位同事已經實現了它。很容易擴展代碼來限制彈出窗口到主機窗口。它雖然表現得有點奇怪。緩慢且平滑的拖動允許彈出窗口向右移動到主窗口的邊緣,但快速不穩定的拖動導致它在到達邊緣之前停止。仍試圖找出原因。

0

處理此問題的最佳方法是防止用戶將其拖出瀏覽器窗口。要做到這一點,你可以得到Silverlight host control的寬度和高度。一旦你有了這些信息,你可以在用戶拖動窗口時檢查窗口的位置,而不是讓它們超出窗口的界限。

2

鼠標移動以離散時間間隔進行報告。也就是說,移動鼠標的速度越快,報告的鼠標位置就越遠。將鼠標從窗口內部快速拖到窗口外部可以很好地報告窗口內的位置(PointA),而下一個報告將很好地在窗口外(PointB)。如果在拖動時使用CaptureMouse調用,您仍可以在指針位於主機窗口外時接收鼠標位置報告。當你發現你已經移動到窗口之外時,你可以假定鼠標位於窗口的邊緣。也就是說,如果你要畫一條從PointA到PointB的假想線,你可以假設你的最後一點是該線穿過窗口邊界的地方。如果您不使用MouseCapture,或者您使用的是無窗口插件,則在窗口外拖動時,我認爲您不會看到鼠標事件。在這種情況下,估計鼠標越過窗口邊界的位置更加困難。

0

可能是因爲Mouse_Leave事件觸發?