2011-12-11 11 views
7

मैं एक फॉर्म के फोकस को कैसे मजबूर कर सकता हूं? .Focus() मेरे लिए काम नहीं कर रहा है।फॉर्म फोकस को कैसे बल दें?

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     form.Focus(); 
    } 
} 

मैं क्या गलत कर रहा हूं?

उत्तर

6

यह होना चाहिए

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     Application.OpenForms[form.Name].Focus(); 
    } 
} 
+0

मेरे लिए काम नहीं किया। यदि फॉर्म कम हो गया है और मैं बटन 1 में क्लिक करता हूं तो फॉर्म सक्रिय नहीं है (फोकस में रखा गया है)। – Jack

+0

क्षमा करें, क्या आपने संपादन देखा था? आपने किसने कोशिश की? चुनें() या फोकस()? –

+0

अभी ठीक काम करता है। धन्यवाद! लेकिन जिज्ञासा से, 'फॉर्म' चर के संदर्भ में क्यों काम नहीं कर रहा है? – Jack

14

आप पहली बार प्रपत्र दिखाने की जरूरत है - Show() विधि का उपयोग करें:

var form = new loginForm(); 
form.Show(); 

संपादित करें: (अद्यतन सवाल)

Activate() बुला अधिक उपयुक्त हो सकता है एक मौजूदा फार्म के लिए, यह भी लाता है सामने के लिए फॉर्म:

private void button1_Click(object sender, EventArgs e) 
{ 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) 
    { 
      form.Show(); 
    } 
    else 
    { 
     Application.OpenForms[form.Name].Activate(); 
    } 
} 

यदि फॉर्म कम किया गया है तो आपको ग्राहक की आवश्यकता है FormWindowState.Normal करने के लिए अपने खिड़की स्थिति बदलने Activated घटना के लिए हो सकता है:

private void loginForm_Activated(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Normal; 
} 
+0

rigth, मैं संपादित, मेरा असली कोड देखें। :) – Jack

8

इस प्रयास करें:

this.BringToFront(); 
this.Activate(); 
संबंधित मुद्दे