2014-06-16 54 views
0

我目前正在C#中實現一個應用程序(類似於神經網絡),我可以添加神經元並使用多個事件(鼠標,鍵盤,觸摸,跳躍運動......)將它們關聯起來。無論如何,我正在修改代碼中的一些內容,使它更清晰,更通用,因爲它從一開始就應該是這樣。看不到鼠標事件

我在這裏的問題是關於事件。我知道它是如何工作的,並且我設法爲鼠標或觸摸事件構建了一個監聽器。我的應用程序可以被看作是:

  • 一個Canvas(窗口)
  • 一個VisualBox

我VisualBox是多個屬性更好的網格。它包含一個本身包含一個自定義Shape的Viewbox。因此,要恢復我

  • 帆布
  • VisualBox
  • Viewbox控件
  • 形狀

由於我VisualBox是一個網格,我可以將事件附加到它,即使我已經做到了,我的事件唯一指向的是我的形狀。基本上我的發件人總是類型形狀。

有沒有人知道我該怎麼做/指定將我的VisualBox視爲指向的對象而無需瀏覽Shape父項?

回答

0

如果我理解正確,即使事件的發件人在繼承層次結構中處於較高位置,您仍試圖訪問基礎對象?如果是這種情況,您可以通過對象層次結構將事件鏈接到您的形狀類,或者更簡單的方法是,如果您在事件觸發時可以訪問形狀對象,則可以在初始化事件參數時包含對該對象的引用。

public class InheritedShapeEventArgs : EventArgs //or some other event argument class 
{ 

    public InheritedShapeEventArgs(Shape shape) 
    { 
    this.Shape = shape; 
    { 
    public Shape Shape { get; private set; } 

} 
+0

我使用了我的形狀的IsEnabled屬性。我把它寫成「假」,然後我可以看到我的網格上的事件。可以做還是應該避免這種情況?我寧願避免將我的事件映射到許多目標相同對象的對象(Grid + Shape)上。 – baptiste

+0

使用屬性決定是否觸發事件沒有問題。如果我們可以看到對象層次結構,並且該對象觸發事件,那麼幫助您會更容易 –