Моно winforms приложение полноэкранный режим в Ubuntu?

просто интересно, есть ли известный способ получить моно-систему.Окна.Формы приложения для перехода в полноэкранный режим на Ubuntu / Gnome.

Mono-2.4.2.3 Ubuntu 9.10

для этого на Windows требуется pinvoke, явно не будет работать здесь.

Это то, что я получаю, устанавливая границу окна в none, положение окна в центр и состояние для максимального:

alt-текст http://dl.dropbox.com/u/116092/misc/permalink/joggler/screenshot01.png

обновление.

также пробовал:

  • этого.StartPosition = Система.Окна.Формы.FormStartPosition.CenterScreen;
    этот.Windowstate Значение = Система.Окна.Формы.FormWindowState.Максимизировано;

  • сочетания клавиш Ctrl-F11 для

  • текст = строка.Пусто; / / нет подписи
    MaximizeBox = ложь;
    MinimizeBox = false;
    ControlBox = false;
    Formborderstyle Значение = Нет;
    WindowState = Развернуто;

  • Formborderstyle Значение = Formborderstyle Значение.Нет;
    Location = новая точка (0, 0);
    Размер = Экран.PrimaryScreen.Границы.Размер;

все из которых я заканчиваю с тем же результатом.

я наткнулся на свинец, который включает в себя pinvoke с участием _NET_WM_STATE_FULLSCREEN, но это пока как и у меня. Любые указатели на это будут оценены.

10 ответов


_NET_WM_STATE_FULLSCREEN просто избавится от границ. Панель GNOME по-прежнему будет отображаться.

согласно следующему сообщению, секрет заключается в том, чтобы избавиться от минимальных / максимальных размеров, чтобы оконный менеджер сам изменял размер:

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

вот некоторая документация по native spec:

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

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

чтобы поговорить непосредственно с системой X Window, вы должны pinvoke в XLib. Чтобы отправить что-то вроде _NET_WM_STATE_FULLSCREEN, у вас должен быть указатель на окно, а также на дисплей.

Я не уверен, как найти дисплей, но я могу помочь с указателем на окно. При запуске на X свойство Form.Handle должен быть указатель на окно X.


не уверен, что вы подразумеваете под "полным экраном", но я написал несколько окон.Формирует приложения, которые захватывают экран, и без единого PInvoke.

вот как я настраиваю свою основную форму ...

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

дополнительно

TopMost = true;

надеюсь, что это помогает.


вам нужно отключить визуальные эффекты в ubuntu.

изменить: И убедитесь, что размер вашей формы по крайней мере разрешение экрана без границ. Если границы находятся во время разработки, и вы удаляете их в коде, вам понадобится что-то вроде 1030x796 для дисплея 1024x768.


Я страдал от этой проблемы 2 дней, и, наконец, я получил решение: нажмите 1-й значок на левой панели инструментов и найдите программу compizconfig. Перейдите в preference - > unity, и вы увидите, что слева есть галочка для плагина unity. Удалите эту галочку, и вы увидите, что верхняя строка меню исчезла. Хотя эта тема очень старая, но я все еще надеюсь, что смогу помочь всем, кто получит эту проблему и обратиться за помощью.


вы пробовали это?

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

к сожалению, у меня сейчас нет Ubuntu, но я вижу старые патчи для этого в старых версиях mono...


должно быть возможно отобразить каждое приложение, работающее внутри gnome в полноэкранном режиме с помощью горячей клавиши "CTRL+F11".

может быть, вы могли бы попробовать

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

но это только предположение, у меня нет Linux, работающего atm, чтобы попробовать это. Но, возможно, это поможет.


Я не могу проверить это на данный момент, но вы не пробовали просто изменить?

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

Я работал над этим сейчас, установив свойство autohide панели.

не идеально, потому что это зависит от пользователя, меняющего свою среду для использования моего приложения, но лучше, чем ничего.



следующие работы:

(вдохновение было взято отсюда: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);