如何更改C类的类型#

时间:2015-07-10 18:39:49

标签: c# class eventargs

我在C#中有这个使用MouseEventArgs的类,我想调用该函数并使其工作而不使用MouseEventArgs。任何想法我该怎么做?

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);

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);
}