10

只是想知道是否有一种已知的方法可以让 Mono System.Windows.Forms 应用程序在 Ubuntu/Gnome 上全屏显示。

Mono 是 2.4.2.3 Ubuntu 是 9.10

在 Windows 上执行此操作需要 pinvoke,显然不会在这里工作。

这就是我将窗口边框设置为无,将窗口位置设置为中心,并将状态设置为最大化:

替代文字 http://dl.dropbox.com/u/116092/misc/permalink/joggler/screenshot01.png

更新。

也试过:

  • this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

  • CTRL-F11

  • 文本 = 字符串。空;// 无标题
    MaximizeBox = false;
    最小化框 = 假;
    控制框 = 假;
    FormBorderStyle = 无;
    WindowState = 最大化;

  • FormBorderStyle = FormBorderStyle.None;
    位置 = 新点 (0, 0);
    大小 = Screen.PrimaryScreen.Bounds.Size;

所有这些我都得到了相同的结果。

我遇到了一个涉及 _NET_WM_STATE_FULLSCREEN 的 pinvoke 的线索,但就我所知。对此的任何指示将不胜感激。

4

10 回答 10

3

_NET_WM_STATE_FULLSCREEN 将摆脱边界。GNOME 面板仍会出现。

根据以下帖子,秘诀是摆脱最小/最大尺寸,以便窗口管理器自行调整大小:

http://linux.derkeiler.com/Mailing-Lists/GNOME/2010-01/msg00035.html

以下是有关本机规范的一些文档:

http://standards.freedesktop.org/wm-spec/wm-spec-latest.html

http://www.x.org/docs/ICCCM/icccm.pdf

要直接与 X Window System 对话,您必须调用 XLib。为了发送像 _NET_WM_STATE_FULLSCREEN 这样的东西,你必须有一个指向窗口和显示器的指针。

我不确定如何找到显示器,但我可以提供指向窗口的指针。在 X 上运行时,该属性Form.Handle应该是指向 X 窗口的指针。

于 2010-06-24T18:31:59.640 回答
2

不确定您所说的“全屏”是什么意思 - 但我已经编写了几个占据屏幕的 Windows.Forms 应用程序,并且没有单个 PInvoke。

这是我配置主表单的方式...

Text = string.Empty; // No caption
MaximizeBox = false;
MinimizeBox = false;
ControlBox = false;
FormBorderStyle = None;
WindowState = Maximized;

可选地,

TopMost = true;

希望这可以帮助。

于 2010-06-21T01:52:05.013 回答
1

您需要在 ubuntu 中禁用视觉效果。

编辑:并确保您的表单大小至少是无边框的屏幕分辨率。如果边框在设计时并且您在代码中删除它们,您将需要类似 1030x796 的东西来显示 1024x768。

于 2010-06-24T12:33:11.267 回答
1

我被这个问题困扰了2天,终于找到了解决方案:单击左侧工具栏上的第一个图标并搜索compizconfig程序。转到首选项->统一,您会看到左侧有一个统一插件的勾号。删除该勾号,您将看到顶部菜单栏消失。虽然这个线程很老,但我仍然希望我能帮助任何遇到这个问题并寻求帮助的人。

于 2013-07-18T02:52:44.630 回答
0

你试过这个吗?

  this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;             
    this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

不幸的是,我现在没有可用的 Ubuntu,但我可以在旧的单声道版本中看到旧补丁......

于 2010-05-17T11:20:51.403 回答
0

应该可以使用“CTRL+F11”热键以全屏模式显示在 gnome 中运行的每个应用程序。

也许你可以试试

System.Windows.Forms.SendKeys.Send();

但这只是一个猜测,我没有运行 atm 的 Linux 来尝试这个。但也许这会有所帮助。

于 2010-05-20T20:21:37.237 回答
0

我目前无法对其进行测试,但是您尝试过简单的调整大小吗?

form.FormBorderStyle = FormBorderStyle.None
form.Location = Point(0, 0)
form.Size = Screen.PrimaryScreen.Bounds.Size
于 2010-05-22T14:40:52.323 回答
0

我现在已经通过设置面板的自动隐藏属性来解决这个问题。

不理想,因为它取决于用户改变他们的环境来使用我的应用程序,但总比没有好。

于 2010-06-22T18:15:24.803 回答
0

YMMV。http://fixunix.com/xwindows/91585-how-make-xlib-based-window-full-screen.html

于 2010-06-24T14:16:31.397 回答
0

以下工作:

(灵感来自这里:https ://bugzilla.xamarin.com/show_bug.cgi?id=40997 )

1) sudo apt-get install wmctrl

2)在您的代码中:

Form form = new MainWindow();
form.FormBorderStyle = FormBorderStyle.None;
form.WindowState = FormWindowState.Maximized;

form.Load += (s, e) => {
    Process process = new Process {
        StartInfo = new ProcessStartInfo {
            FileName = "wmctrl",
            Arguments = $"-r :ACTIVE: -b add,fullscreen",
            CreateNoWindow = true
        }
    };
    process.Start();
    process.WaitForExit();
};

Application.Run(form);
于 2018-08-29T00:00:33.677 回答