2011-12-06 37 views
0

我需要一個接收控件位置/位置的事件,例如一個圖像控件,我使用動畫進行移動。自定義PositionChanged事件

所以我找到了我需要的this post的一些代碼,但是我不知道在哪裏放置代碼。

我是否應該在某些事件中窗口加載事件還是什麼?我錯過了什麼?

C#:

var topDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.TopProperty, typeof(Rectangle)); 
var leftDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.LeftProperty, typeof(Rectangle)); 

topDescriptor.AddValueChanged(rectangle, rectangle_PositionChanged); 
leftDescriptor.AddValueChanged(rectangle, rectangle_PositionChanged); 


//I know where this part goes 
    private void rectangle_PositionChanged(object sender, EventArgs e) 
    {  
    ... 
    } 

VB.NET:

Dim topDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.TopProperty, GetType(Rectangle)) 
    Dim leftDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.LeftProperty, GetType(Rectangle)) 

    topDescriptor.AddValueChanged(rectangle, rectangle_PositionChanged) 
    leftDescriptor.AddValueChanged(rectangle, rectangle_PositionChanged) 

//I know where this part goes 
    Private Sub rectangle_PositionChanged(sender As Object, e As EventArgs) 
     ... 
    End Sub 

謝謝,VenoMDee。

回答

0

是的,我認爲這段代碼應該放在窗口加載事件中,以便事件處理程序在窗體顯示之前就被連接起來。

+0

只有一個問題...當我嘗試運行該應用程序時,它說「參數未指定爲Private Sub rectangle_PositionChanged(sender As Object,e As EventArgs)」的參數'e'「。我做錯了什麼? –

+0

問題是Canvas.Top和Canvas.Left的類型是System.Double,而不是Rectangle,所以我不確定原代碼是如何工作的。 –