Как создать форму окна с помощью консольного приложения? Например, когда я запускаю консольное приложение, оно отображает форму (форма окна). Кто-нибудь может мне помочь?Консольное приложение, которое создало форму (форма Windows)?
ответ
Не поддерживается напрямую.
Что вы можете сделать, это иметь два отдельных приложения, одну форму и одну консоль. Запустите консоль один из формы и передайте данные между приложениями. Если вы хотите, чтобы установить форму, чтобы быть «внутри» консольное приложение вы можете использовать
http://msdn.microsoft.com/en-us/library/aa984420%28v=vs.71%29.aspx
Во-первых, вы должны понять, как окна в Windows, работает. Каждая оконная программа управляет тем, что называется очередью сообщений. Сообщения - это информация из системы (и других приложений), что-то произошло, например, кто-то нажал клавишу или переместил мышь, чтобы окно могло нормально реагировать на это действие пользователя.
Обработка сообщений (в том числе отправка их в соответствующее окно) является ответственностью программы, а в приложениях Windows Forms выполняется в приложении Application.Run (или где-то рядом с ним) с помощью некоторого внутреннего цикла обработки сообщений. Но если вы хотите отобразить окно в своем консольном приложении, кто-то должен взять на себя ответственность за этот процесс, иначе окно будет работать неправильно (на самом деле они вообще не будут работать).
Если отобразить окно модально, он будет обрабатывать сообщения, поступающие в нее сам по себе, так что вы можете позвонить непосредственно myWindow.ShowDialog
из вашего кода, и это будет работать - но заблокирует консоль вход прочь, пока окно не будет закрыто. Это означает, что вы сможете отправить текст на консоль Console.WriteLine
, но вы не сможете - например, запросить у пользователя текст по Console.ReadLine
, пока окно не будет закрыто.
class Program
{
public static void Main(string[] args)
{
System.Windows.Forms.Form f = new System.Windows.Forms.Form();
f.Click += (o, e) => { Console.WriteLine("Clicked!"); };
f.ShowDialog();
Console.ReadLine();
}
}
// (run, then click on a form to observe result)
Если, с другой стороны, вы хотите отображать окно в недиалоговом режиме, все становится сложнее. Самое простое, что приходит на ум - создать приложение Windows Forms и использовать AllocConsole для создания отдельного окна консоли для приложения (например, Blender делает это). Другой вариант - создать два разных приложения: консоль и Windows Forms, запустить второй из первого и управлять своим сообщением каким-то механизмом (именованные каналы, общая глобальная память, сообщения Windows, TCP/IP и т. Д.)
- 1. Консольное приложение, которое не читается?
- 2. Попытка конвертировать консольное приложение в форму Windows в VS 2012
- 3. консольное приложение. Vs windows app
- 4. Windows Service или консольное приложение?
- 5. . Консольное приложение .NET, которое не поддерживает консоль
- 6. Как создать консольное приложение, которое не завершается?
- 7. конвертировать консольное приложение в приложение Windows
- 8. Как превратить консольное приложение в форму Win
- 9. Конвертировать консольное приложение в форму с панелью выполнения?
- 10. Добавление значка в консольное приложение Windows
- 11. Консольное приложение для связи с услугой Windows
- 12. Запустить консольное приложение с помощью Windows Scheduler
- 13. Windows, консольное приложение - сигнал для события закрытия
- 14. Профилировщик для Windows C++ (консольное сетевое приложение)
- 15. Консольное приложение Windows с gets() ROP-эксплоит
- 16. Как открыть приложение из сообщения тоста, отличного от того, которое его создало в Windows Phone 8.1.
- 17. Запустите форму окна, пока мое консольное приложение все еще работает
- 18. Программно закрыть консольное приложение Windows C++
- 19. Как выполнить консольное приложение в Microsoft Windows
- 20. Как конвертировать консольное приложение в службу Windows?
- 21. Как запустить консольное приложение из Windows Service?
- 22. Как выполнить консольное приложение из формы Windows?
- 23. Создать консольное приложение в приложении Windows Forms
- 24. Консольное приложение Windows на Mac/Linux? C++
- 25. . NET приложение работает как Windows Form или как консольное приложение
- 26. Мне нужно написать консольное приложение, которое запускается раз в месяц
- 27. Как преобразовать приложение winform в консольное приложение
- 28. Как создать консольное приложение VB6
- 29. Консольное приложение не закрывается
- 30. C++ (VC2010) Помогите конвертировать консольное приложение в скрытое приложение Windows?
Что вы подразумеваете под «не поддерживаемым напрямую»? Добавьте ссылку на 'System.Windows.Forms', а затем запишите в консольном приложении:' System.Windows.Forms.Form f = new System.Windows.Forms.Form(); f.ShowDialog(); ' – Spook
Вопрос сформулирован как« Как создать форму окна с помощью консольного приложения? » Вы не можете сделать это напрямую. И вы не можете связать их вместе как одно окно, но вы можете (как я уже указывал) сделать иллюзию этого. Редактировать: Я не должен говорить, что вы не можете, возможно, это возможно, но не настолько, насколько мне известно, каких-либо обычных средств. – Emz
Что может быть более условным от создания экземпляра формы и вызова ShowDialog? Вы даже можете просто добавить Windows Form в проект консоли и отредактировать его в VS-дизайнере. Я не вижу, что здесь «не поддерживается напрямую». «Необычно», может быть. BTW наоборот требует ~ 1 строки кода (добавление поддержки консоли в WF-приложение) – Spook