Моно 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);