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

单声道为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

  • 文本=字符串.空;// 无标题
    最大化框 = false;
    最小化框=假;
    控制框=假;
    表单边框样式=无;
    窗口状态=最大化;

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

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

我遇到过一条涉及 _NET_WM_STATE_FULLSCREEN 的 pinvoke 的线索,但这就是我所掌握的。任何有关这方面的指示将不胜感激。

有帮助吗?

解决方案

_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 系统对话,您必须调用 XLib。为了发送类似 _NET_WM_STATE_FULLSCREEN 的内容,您必须有一个指向窗口和显示器的指针。

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

其他提示

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

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

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

可选地,

TopMost = true;

希望这可以帮助。

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

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

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

你试过这个吗?

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

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

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

也许你可以尝试

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

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

我现在无法测试它,但是你尝试过简单的调整大小吗?

form.FormBorderStyle = FormBorderStyle.None
form.Location = Point(0, 0)
form.Size = Screen.PrimaryScreen.Bounds.Size

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

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

以下工作有效:

(灵感来自这里: 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top