سؤال

لدي تطبيق.

أولا، أقوم بعرض شاشة البداية، نموذجا، وسوف استدعاء دفقة أخرى نموذجا آخر.

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

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

المحلول

تحتاج إلى عرض شاشة البداية في مؤشر ترابط مختلف - حاليا رمز تحميل النموذج الجديد الخاص بك يحظر مؤشر ترابط UI SPLASH.

بدء تشغيل مؤشر ترابط جديد، وعلى هذا الموضوع إنشاء شاشة البداية والاتصال Application.Run(splash). وبعد سيبدأ ذلك مضخة رسائل جديدة على هذا الموضوع. ستحتاج بعد ذلك إلى إجراء مكالمة موضوع UI الرئيسي الخاص بك مرة أخرى إلى مؤشر موضوع UI SPLASH Screen (على سبيل المثال مع Control.invoke / BeginInvoke) عندما تكون جاهزة، لذلك يمكن لشاشة البداية إغلاق نفسها.

الشيء المهم هو التأكد من عدم محاولة تعديل عنصر تحكم UI من مؤشر الترابط الخطأ - فقط استخدم الوحدة التي تم إنشاؤها.

نصائح أخرى

يحتوي Worknet Framework على دعم ممتاز شاشات Splash. بدء مشروع WF جديد، مشروع + إضافة مرجع، حدد Microsoft.VisualBasic. إضافة نموذج جديد، اتصل به frmsplash. افتح Project.cs وجعلها تبدو وكأنها:

using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;

namespace WindowsFormsApplication1 {
  static class Program {
    [STAThread]
    static void Main(string[] args) {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      new MyApp().Run(args);
    }
  }
  class MyApp : WindowsFormsApplicationBase {
    protected override void OnCreateSplashScreen() {
      this.SplashScreen = new frmSplash();
    }
    protected override void OnCreateMainForm() {
      // Do your time consuming stuff here...
      //...
      System.Threading.Thread.Sleep(3000);
      // Then create the main form, the splash screen will close automatically
      this.MainForm = new Form1();
    }
  }
}

كان لدي مشكلة مماثلة قد ترغب في تسجيل المغادرة. ال أكد تجاوز الإجابة لقد عملت بشكل مثالي بالنسبة لي - قد ترغب في إلقاء نظرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top