Windows窗体旋转

在.Net中创建表单时,它将显示为纵向布局中的对话框。

没有人喜欢侧面阅读或颠倒,但我有一个非常有效的理由来旋转表格。

任何人都知道如何在使用C#的Windows Vista上执行此操作?

它必须在WinForms中吗? 使用旋转变换在WPF中很容易做到这一点。 不幸的是,WindowsFormsHost与WPF的集成不允许旋转变换。

编辑

我现在明白,有问题的表格不受海报的控制。 在WPF中编写控件不会解决问题。

也许这个可能对你有所帮助,我有一个类似的问题

这将是一些额外的工作,但如果你主要只是需要旋转表单的内容(而不是整个窗口,包括标题栏,窗口控件等,我以前从未见过),你可以改为制作一个旋转90度的完全所有者绘制的用户控件,并将其放在普通表单上。 您甚至不必调整所有内容的绘图,因为您可以在Graphics对象上执行RotateTransform,然后正常绘制所有内容。

或者,如果您需要旋转整个表单,您可以使表单无边框,然后基本上做同样的事情,也自己绘制标题栏和窗口控件。

更新 :这是一篇MSDN文章的链接,该文章展示了如何在C#中旋转整个屏幕:

http://msdn.microsoft.com/en-us/library/ms812499.aspx

这适用于常规Windows(不是Windows Mobile),所以它应该适用于你的porpoises,虽然它会旋转所有Windows而不仅仅是你的应用程序的forms。 根据其工作速度和总体需求,您可以在应用程序获得焦点时将屏幕旋转90度,然后在应用程序失去焦点时将其旋转回正常状态。

更新2:我只是重读你的问题和评论。 你在谈论在一个单独的进程中旋转一个单独的应用程序的窗口,所以WPF 绝对不会帮助你。 MSDN链接可能就是您所需要的。 在您的应用程序中,您可以将屏幕旋转90度,然后在单独的过程中启动另一个应用程序。 如果你可以强制单独的应用程序的窗口最大化,这将是最好的,你可以通过P /调用FindWindow和SendMessage API来做(你也可以使窗口始终在顶部,这将使您的计算机成为一种自助服务终端此应用程序的模式)。 有一个版本的Process代码基本上使另一个应用程序启动阻塞调用,这意味着你的应用程序将等待shell应用程序关闭,然后再恢复。 应用关闭后,您可以将屏幕恢复到正常方向。