Ubuntu中的Mono winforms应用程序全屏?

Ubuntu中的Mono winforms应用程序全屏?,winforms,ubuntu,mono,fullscreen,window-managers,Winforms,Ubuntu,Mono,Fullscreen,Window Managers,只是想知道是否有一种方法可以让Mono System.Windows.Forms应用程序在Ubuntu/Gnome上全屏运行 单声道是2.4.2.3 Ubuntu是9.10 在Windows上执行此操作需要pinvoke,显然在这里不起作用 这就是我将窗口边框设置为“无”,窗口位置设置为“中心”,状态设置为“最大化”的结果: 更新。 还尝试: this.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen this

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

单声道是2.4.2.3 Ubuntu是9.10

在Windows上执行此操作需要pinvoke,显然在这里不起作用

这就是我将窗口边框设置为“无”,窗口位置设置为“中心”,状态设置为“最大化”的结果:

更新。

还尝试:

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

  • CTRL-F11

  • Text=string.Empty;//无标题
    MaximizeBox=假
    b x=假
    ControlBox=false
    FormBorderStyle=无
    窗口状态=最大化

  • FormBorderStyle=FormBorderStyle.无
    位置=新点(0,0)
    Size=Screen.PrimaryScreen.Bounds.Size

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

我遇到了一个线索,涉及到一个涉及全屏的pinvoke,但这就是我所能做到的。如果有任何关于这方面的建议,我们将不胜感激。

您尝试过这个吗

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

不幸的是,我现在没有可用的Ubuntu,但我可以在旧的mono版本中看到这方面的旧补丁…

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

也许你可以试试

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

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

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

form.FormBorderStyle = FormBorderStyle.None
form.Location = Point(0, 0)
form.Size = Screen.PrimaryScreen.Bounds.Size
我不知道你说的“全屏”是什么意思,但我已经写了几个Windows.Forms应用程序,它们占据了整个屏幕,没有一个PInvoke

下面是我如何配置我的主窗体

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

TopMost = true;

希望这能有所帮助。

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


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

你需要在ubuntu中禁用视觉效果

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

YMMV

\u NET\u WM\u STATE\u全屏只需去除边界即可。GNOME面板仍将出现

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

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

要直接与X窗口系统对话,您必须将pinvoke插入XLib。为了在全屏上发送类似于“NET\uwm\u STATE\u”的内容,您必须有一个指向窗口和显示器的指针


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

我遇到这个问题两天了,最后我得到了解决方案: 单击左侧工具栏上的第一个图标并搜索compizconfig程序。转到preference->unity,您将看到在左侧有一个unity插件的勾号。删除该勾号,您将看到顶部菜单栏消失。 虽然这个帖子很老了,但我仍然希望我能帮助任何遇到这个问题的人并寻求帮助

以下措施奏效了:

(灵感来自这里:)

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);

这是一个边缘案例,祝你好运。是的,这就是我问的原因:-)如果你最终选择了“网络-工作-状态-全屏”路线,请看我下面的答案。不幸的是,这没有通过屏幕顶部的任务栏(更新了带有屏幕截图的帖子)确定-然后尝试找到相关的C调用以全屏显示。调用本机C函数在Mono下也可以工作。如果你在那里有问题,请告诉我,但我过去也这样做过。嗯,谷歌带来了全屏幕。这看起来有用吗?是的,但我找不到函数调用所需的其他参数。这在Windows上运行得非常好,这很好,因为我不知道如果不使用pinvoke隐藏任务栏,您就可以做到这一点。然而,Mono上没有这样的运气:另一个在Windows上运行良好,但结果与上面的第二个屏幕截图相同。您是手动还是代码?如果是后者,我想当你的应用获得焦点时,你可以随时切换它。这样,你就可以看到整个屏幕,但其他所有应用程序的行为都与预期的一样,系统也会保持原样。当然,您需要检查初始状态以确保它尚未自动隐藏。这应该像你想要的那样工作,即使感觉很恶心。我在Mono源代码中做了一点搜索,没有任何东西调用全屏。我很高兴地说,没有完全管理的方法可以使用Mono向窗口管理器发送正确的窗口提示。当然,你可以使用GTK,因为它在下面使用GTK+,GTK#u window#u fullscreen()可以满足你的需要。虽然:ACTIVE:在VirtualBox上为我工作,但在Ubuntu平板电脑上不起作用。我用窗口标题(表单的文本属性)替换了:ACTIVE:,这很有效。谢谢!如果我仍然拥有8年前的硬件就好了;-)