之前的一个问题是通过动态加载控件的方式解决的,但在继续写代码的过程中发现,需要为这个控件添加一个响应事件。在查找网上资料加上自己尝试之后,发现解决方式为:
namespace Cube2
{
public partial class AppForm : Form
{
private vtkFormsWindowControl vtkControl = null;
public AppForm()
{
//初始化,仅用InitializeComponent()屏幕会花,干脆直接渲染为白色
InitializeComponent();
//动态加载vtkFormWindowControl
vtkControl = new vtkFormsWindowControl
{
Location = new Point(172, 27),
Size = new System.Drawing.Size(698, 501),
Name = "vtkControl",
TabIndex = 3,
BackColor = System.Drawing.Color.AliceBlue,
Text = "vtkFormsWindowControl",
Dock = DockStyle.Right,
Anchor = AnchorStyles.Top & AnchorStyles.Left
};
Controls.Add(vtkControl); //动态加载vtkFormWindowControl
this.vtkControl.Click += new EventHandler(vtkControl_Click); //添加事件
vtkRenderer ren = new vtkRenderer() ;
vtkRenderWindow win = this.vtkControl.GetRenderWindow();
ren.SetBackground(255 / 255.0, 255 / 255.0, 255 / 255.0);
win.AddRenderer(ren);
}
void vtkControl_Click(object sender, EventArgs e)
{
//code here
}
另外要说明的是,虽然网上的资料显示添加事件时的响应函数可以自己命名,但我尝试的过程中发现,只能使用“控件名_事件名”,也即
vtkControl_Click才不会出现错误。