2015-07-10 28 views
0

我在C#中使用MouseEventArgs的這個類,我想調用該函數並使其工作而不使用MouseEventArgs。任何想法我該怎麼做?如何更改類C#

private void SpatialControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     _camChanged = false; 
     DrawingControl.Viewport.Camera.Changed += Camera_Changed; 
     DrawingControl.ZoomSelected(); 
     DrawingControl.Viewport.Camera.Changed -= Camera_Changed; 
     if (!_camChanged) 
      DrawingControl.ClipBaseSelected(0.15); 
    } 

,我也想加入這個

DrawingControl.Viewport.Camera.Position = new Point3D(100, 100, 1); 
DrawingControl.Viewport.SetView(new Point3D(-1,-1,-1), new Vector3D(1,1,1), new Vector3D(1,2,1),5); 
+1

你所說的「使不使用MouseButtonEventArgs工作」是什麼意思?這是一個事件處理程序,它由鼠標事件調用。 (特別是雙擊。)爲什麼鼠標事件中不會有MouseButtonEventArgs?此外,該代碼不*使用它給出的MouseButtonEventArgs *做任何事情,所以它以什麼方式不起作用? – David

+0

刪除MouseButtonEventArgs的目的是什麼? –

+0

所以我的項目是關於自動完成任何事情的,比如我想要顯示一個模型,設置它的初始位置,然後點擊「Run」來旋轉模型。之後我不想再有任何人際交往。但是我發現的所有例子都是通過使用MouseEventArgs或按鈕來旋轉模型,所以我想要改變這些函數並使它們與事件參數一起工作。所以這個班只是一個例子,因爲我不能發佈我的所有項目,因爲它是Huuuuuuuuuuuuge –

回答

0

只要打電話從其他方法處理方法。

public void Mymethod() 
{ 
    // Callind the event 
    SpatialControl_MouseDoubleClick(new object(), new MouseButtonEventArgs()) 
    // Executing other code. 
    DrawingControl.Viewport.Camera.Position = new Point3D(100, 100, 1); 
    DrawingControl.Viewport.SetView(new Point3D(-1,-1,-1), new Vector3D(1,1,1), new Vector3D(1,2,1),5); 
} 
0

你可以通過簡單地使另一個功能SpatialControl_MouseDoubleClick調用要做的第一件事(呼叫,而無需使用MouseButtonEventArgs該功能):

private void spatialControl_DoubleClick() 
{ 
    _camChanged = false; 
    DrawingControl.Viewport.Camera.Changed += Camera_Changed; 
    DrawingControl.ZoomSelected(); 
    DrawingControl.Viewport.Camera.Changed -= Camera_Changed; 
    if (!_camChanged) 
     DrawingControl.ClipBaseSelected(0.15); 
    DrawingControl.Viewport.Camera.Position = new Point3D(100, 100, 1); 
    DrawingControl.Viewport.SetView(new Point3D(-1,-1,-1), new Vector3D(1,1,1), new Vector3D(1,2,1),5); 
} 
private void SpatialControl_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    spatialControl_DoubleClick(); 
} 

或者,你可以保持您SpatialControl_MouseDoubleClick功能,去除它的參數,然後去你的[FormName].Designer.cs文件,找到

`this.[control-name].MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.SpatialControl_MouseDoubleClick); 

行並將其更改爲

this.[control-name].MouseDoubleClick += (sender, e) => this.SpatialControl_MouseDoubleClick(); 

然後,在你的[FormName].cs文件中的代碼看起來就像這樣:

private void SpatialControl_MouseDoubleClick() 
{ 
    _camChanged = false; 
    DrawingControl.Viewport.Camera.Changed += Camera_Changed; 
    DrawingControl.ZoomSelected(); 
    DrawingControl.Viewport.Camera.Changed -= Camera_Changed; 
    if (!_camChanged) 
     DrawingControl.ClipBaseSelected(0.15); 
    DrawingControl.Viewport.Camera.Position = new Point3D(100, 100, 1); 
    DrawingControl.Viewport.SetView(new Point3D(-1,-1,-1), new Vector3D(1,1,1), new Vector3D(1,2,1),5); 
} 
+0

工作表示感謝。我確實刪除了參數,並在其他地方調用了該函數,並且它工作正常。謝謝:) –

+0

@PantelitsaMavrovounioti然後考慮upvoting和/或標記爲答案。其他人在未來可以看看,看到我的回答是正確的:)。 – Jashaszun

+0

我投了票,但我只有11個名譽,所以它說,我收集15 –