Chciałbym odrodzić formularz Windows z konsoli przy użyciu C#. Z grubsza jak w Linuksie, i modyfikować jego zawartość itp. Czy to możliwe?Formularz Windows z konsoli
5
A
Odpowiedz
6
powinieneś móc dodać odwołanie do System.Windows.Forms a potem być dobry, aby przejść. Możesz również zastosować STAThreadAttribute do punktu wejścia swojej aplikacji.
using System.Windows.Forms;
class Program
{
[STAThread]
static void Main(string[] args)
{
MessageBox.Show("hello");
}
}
... bardziej skomplikowane ...
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
Tak, możesz zainicjować formularz w konsoli. Dodaj odwołanie do System.Windows.Forms i stosować następujące przykładowy kod:
System.Windows.Forms.Form f = new System.Windows.Forms.Form();
f.ShowDialog();
1
Można spróbować tej
using System.Windows.Forms;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MyForm());
}
Bye.
4
Wspólna odpowiedź:
[STAThread]
static void Main()
{
Application.Run(new MyForm());
}
Alternatywy (zaczerpnięte z here) jeżeli, na przykład - chcesz uruchomić formularz z wątku innego niż głównego aplikacji:
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());
}
Czy mogę uzyskać komentarze na temat downmods? –
Dlaczego zostało to odrzucone? To może nie być świetna praktyka, ale na pewno jest to możliwe. –
Czy to działa bez atrybutu STAThread? –