Mono在Ubuntu中全屏赢得应用程序?

时间:2010-05-12 22:46:38

标签: winforms ubuntu mono fullscreen window-managers

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

单声道是2.4.2.3 Ubuntu是9.10

在Windows上执行它需要一个pinvoke,显然无法在这里工作。

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

alt text 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

  • Text = string.Empty; //没有标题
    MaximizeBox = false;
    MinimizeBox = false;
    ControlBox = false;
    FormBorderStyle =无;
    WindowState =最大化;

  • FormBorderStyle = FormBorderStyle.None;
    Location = new Point(0,0);
    Size = Screen.PrimaryScreen.Bounds.Size;

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

我遇到了一个涉及_NET_WM_STATE_FULLSCREEN的pinvoke的领导,但就我所知道的那样。任何关于此的指示都将受到赞赏。

10 个答案:

答案 0 :(得分: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系统对话,您必须将其转换为XLib。为了发送像_NET_WM_STATE_FULLSCREEN之类的东西,你必须有一个指向窗口和显示器的指针。

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

答案 1 :(得分:2)

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

以下是我配置主表单的方式......

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

可选,

TopMost = true;

希望这有帮助。

答案 2 :(得分:1)

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

编辑: 并确保您的表单大小至少是没有边框的屏幕分辨率。如果边界处于设计时并且您要在代码中删除它们,则需要使用1030x796等1024x768显示器。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

你试过这个吗?

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

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

答案 5 :(得分:0)

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

也许你可以试试

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

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

答案 6 :(得分:0)

我目前无法测试它,但您尝试过简单的调整吗?

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

答案 7 :(得分:0)

我现在通过设置面板的autohide属性解决了这个问题。

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

答案 8 :(得分:0)

答案 9 :(得分: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);