4

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

通常没有人喜欢横向或倒置阅读,但我有一个非常正当的理由来旋转表格。

任何人都知道如何使用 C# 在 Windows Vista 上做到这一点?

4

2 回答 2

2

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

编辑

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

于 2009-09-09T13:22:32.463 回答
0

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

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

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

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

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

更新 2: 我刚刚重读了您的问题和评论。你说的是在一个单独的进程中旋转一个单独的应用程序的窗口,所以 WPF肯定会在这里帮不了你。MSDN 链接可能是您需要的。在您的应用程序中,您将屏幕旋转 90 度,然后在单独的进程中启动另一个应用程序。如果您可以强制最大化单独的应用程序的窗口,这将最有效,您可以通过 P/Invoking FindWindow 和 SendMessage API 来做到这一点(您也可以使窗口始终位于顶部,这会将您的计算机变成一种信息亭此应用程序的模式)。有一个版本的 Process 代码基本上使启动另一个应用程序成为阻塞调用,这意味着您的应用程序将在恢复之前等待外壳应用程序关闭。应用程序关闭后,您可以将屏幕恢复到正常方向。

于 2009-09-09T14:10:56.193 回答