2009-10-26 20 views
5

मैं सी # का उपयोग कर कंसोल से विंडोज फॉर्म को स्पैन करना चाहता हूं। लगभग display लिनक्स में है, और इसकी सामग्री को संशोधित करता है, आदि। क्या यह संभव है?कंसोल से विंडोज फॉर्म

उत्तर

6

आप 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

हां, आप कंसोल में एक फॉर्म प्रारंभ कर सकते हैं। System.Windows.Forms के लिए एक संदर्भ जोड़ें और निम्नलिखित नमूना कोड का उपयोग करें:

System.Windows.Forms.Form f = new System.Windows.Forms.Form(); 
f.ShowDialog(); 
+0

क्या मुझे डाउनमोड्स पर कुछ टिप्पणियां मिल सकती हैं? –

+0

यह क्यों कम किया गया था? यह बहुत अच्छा अभ्यास नहीं हो सकता है, लेकिन यह निश्चित रूप से संभव है। –

+0

क्या यह STAThread विशेषता के बिना काम करेगा? –

1

आप इस

using System.Windows.Forms; 

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

अलविदा कोशिश कर सकते हैं।

4

आम जवाब:

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

वैकल्पिक (here से लिया गया) है, उदाहरण के लिए - आप मुख्य आवेदन के अलावा एक धागे से एक फार्म लॉन्च करना चाहते हैं:

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()); 
} 
संबंधित मुद्दे