2015-07-10 3 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

Так что мой проект о том, чтобы делать что-либо автоматически, например, я хочу отобразить модель, установить ее начальную позицию и затем повернуть модель, просто нажав «Запустить». После этого я не хочу никакого человеческого взаимодействия. Но все примеры, которые я нашел, - это использование MouseEventArgs или кнопок для поворота модели, поэтому я хочу изменить эти функции и заставить их работать с Event Args. Таким образом, этот класс является просто примером, потому что я не могу опубликовать весь свой проект, потому что это Huuuuuuuuuuuuuge –

ответ

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

Вы можете сделать первое (называют эту функцию без использования MouseButtonEventArgs) просто делает другую функцию, которая SpatialControl_MouseDoubleClick вызовов:

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 Рассмотрите возможность опроса и/или маркировки в качестве ответа. Другие люди в будущем могут посмотреть и посмотреть, что мой ответ правильный :). – Jashaszun

+0

Я проголосовал, но у меня только 11 репутации, поэтому он говорит, что мой голос будет показан после того, как я соберу 15 –

Смежные вопросы