1、用IDE的可视化设计器设计窗体,而不是输入代码去生成。
2、按键处理。
一、在XNA窗体中添加WINFORM控件的原理很简单:
1、通过XNA窗体句柄,获取FORM:
xnafrm = CType(System.Windows.Forms.Form.FromHandle(Me.Window.Handle), System.Windows.Forms.Form)
但是获取之后有很多功能是无法使用的。不过满足我们的需求还是完全可以的:
2、重新指定控件父:
pnl.Parent = xnafrm
pnl是一组控件的父容器,把它的父容器重新指定为xnafrm窗体即可。当然,这样做它的位置与在原窗体的位置相同。而需要注意的是,消息处理函数还是原窗体的消息处理函数。
二、处理键盘事件
如果你的代码用不到键盘输入,那完全可以不理会这一段。因为我们控件的父容器发生变化,所以原来的父容器不会分发消息给我们,而如果新窗体也是一个WINFORM,我们会接到它的消息分发,但遗憾的是,XNA的窗体不会给我们这些消息。这里我使用的解决方案是使用原窗体消息过滤器接货消息并转发给控件,当然在XNA的按键处理函数中调用你的处理函数也可以,但那样代码显得交叉太多,会带来一些不便。
温馨提示:答案为网友推荐,仅供参考