Моно Winforms приложение полноэкранный в Ubuntu? - PullRequest
10 голосов
/ 13 мая 2010

Просто интересно, есть ли известный способ заставить приложение Mono System.Windows.Forms работать в полноэкранном режиме в 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

Обновление.

Также пытались:

  • 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 = None;
    WindowState = Maximized;

  • FormBorderStyle = FormBorderStyle.None;
    Местоположение = новая точка (0, 0);
    Размер = Screen.PrimaryScreen.Bounds.Size;

Все это приводит к одному и тому же результату.

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

Ответы [ 10 ]

3 голосов
/ 24 июня 2010

_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.

2 голосов
/ 21 июня 2010

Не уверен, что вы подразумеваете под "Полноэкранным режимом" - но я написал несколько приложений для Windows.Forms, которые занимают весь экран и без единого PInvoke.

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

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

Опционально,

TopMost = true;

Надеюсь, это поможет.

1 голос
/ 18 июля 2013

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

1 голос
/ 24 июня 2010

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

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

0 голосов
/ 29 августа 2018

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

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

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

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

0 голосов
/ 22 мая 2010

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

form.FormBorderStyle = FormBorderStyle.None
form.Location = Point(0, 0)
form.Size = Screen.PrimaryScreen.Bounds.Size
0 голосов
/ 21 мая 2010

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

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

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

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

0 голосов
/ 17 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...