C # نموذج المشكلة: جديدة تحكم النموذج خاسرة وإخفاء عشوائيا

StackOverflow https://stackoverflow.com/questions/1739030

سؤال

وأنا تواجه سلوك غريب مع النماذج على ج # 3.5 التطبيق. على نقرة زر، يا الجلود form1 نفسها، ويخلق form2 جديد، ويظهر form2. يحتوي Form1 أيضا طريقة الحدث اندلعت عندما form2 إغلاق. هنا هو رمز داخل Form1:

Form2 form2;

void button1_Click(object sender, EventArgs e)
    {           
        this.Hide();
        form2 = new form2();
        form2.Show();
        form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);               
    }

void form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        form2.Dispose();
        form2 = null; 
        this.Show();  
    }

والآن، مشكلتي هي أنه في بعض الأحيان عندما فتح form2 (الاختباء form1)، أو عندما form2 قريب (لإظهار form1)، فإن النموذج الجديد يأتي على الشاشة لطرفة ثم إخفاء نفسه. انها لا تزال مفتوحة واستطيع ان اضغط عليه من شريط المهام لإظهاره مرة أخرى، ولكن يتم إرسالها النافذة نفسها وراء أي النوافذ المفتوحة الأخرى. يبدو أنه يفتح ولكن يقلل على الفور.

ويحدث هذا السلوك عشوائيا. في بعض الأحيان سوف أشكال فتح والاختباء من دون مشكلة، ولكن في بعض الأحيان أنها سوف تركز تفقد أكثر من نافذة أخرى. لقد حاولت استخدام التركيز ()، تفعيل ()، وأسمى ولكن كل فشلوا في منع إخفاء المفاجئ.

لا أحد يعرف لماذا يحدث هذا وكيفية اصلاحها؟

وشكرا.

هل كانت مفيدة؟

المحلول

ويمكنك إخفاء النموذج الخاص بك في وقت قريب جدا. للحظة وجيزة، التطبيق لديه أي إطار يمكن أن تحتوي على التركيز. أن قوات يندوز للذهاب بحثا عن نافذة أخرى لإعطاء التركيز إلى، فإنه سيتم اختيار واحد من تطبيق آخر. وتلك النافذة الآن يكون إطار المقدمة، والشكل الثاني الخاص لا تحصل على التركيز وتظهر انخفاض في Z-النظام. الإصلاح بسيط:

void button1_Click(object sender, EventArgs e)
{           
    form2 = new form2();
    form2.Show();
    form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);               
    this.Hide();  // Moved
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top