Форма Windows из консоли - PullRequest
       30

Форма Windows из консоли

5 голосов
/ 26 октября 2009

Я хотел бы создать форму Windows из консоли, используя C #. Примерно как display делает в Linux, и изменяет его содержимое и т. Д. Возможно ли это?

Ответы [ 4 ]

6 голосов
/ 26 октября 2009

Вы должны быть в состоянии добавить ссылку на System.Windows.Forms, а затем хорошо идти Возможно, вам также придется применить атрибут STAThreadAttribute к точке входа вашего приложения.

using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        MessageBox.Show("hello");
    }
}

... более сложный ...

using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        var frm = new Form();
        frm.Name = "Hello";
        var lb = new Label();
        lb.Text = "Hello World!!!";
        frm.Controls.Add(lb);
        frm.ShowDialog();
    }
}
4 голосов
/ 26 октября 2009

Общий ответ:

[STAThread]
static void Main()
{    
   Application.Run(new MyForm());
}

Альтернативы (взяты из здесь ), если, например, вы хотите запустить форму из потока, отличного от основного приложения:

Thread t = new Thread(new ThreadStart(StartNewStaThread)); 

// Make sure to set the apartment state BEFORE starting the thread. 
t.ApartmentState = ApartmentState.STA; 
t.Start(); 

private void StartNewStaThread() { 
    Application.Run(new Form1()); 
} 

.

Thread t = new Thread(new ThreadStart(StartNewStaThread)); 
t.Start();

[STAThread]
private void StartNewStaThread() { 
    Application.Run(new Form1()); 
} 
4 голосов
/ 26 октября 2009

Да, вы можете инициализировать форму в консоли. Добавьте ссылку на System.Windows.Forms и используйте следующий пример кода:

System.Windows.Forms.Form f = new System.Windows.Forms.Form(); 
f.ShowDialog(); 
1 голос
/ 26 октября 2009

Вы можете попробовать это

using System.Windows.Forms;

[STAThread]
static void Main() 
{
    Application.EnableVisualStyles();
    Application.Run(new MyForm()); 
}

Bye.

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