2012-06-13 8 views
14

यहां मेरे मूलभूत कार्यक्रम हैं जो मैं करना चाहता हूं जब मेरा डब्ल्यूपीएफ एप्लीकेशन शुरू होता है। यह मेरी मशीन पर शब्द कैसे शुरू होता है, यह बहुत समान है।मैं डब्ल्यूपीएफ एप्लिकेशन के स्टार्टअप के दौरान प्रतीक्षा कर्सर कैसे प्रदर्शित करूं?

  1. व्यस्त कर्सर प्रदर्शित करें।
  2. बुनियादी प्रारंभिक प्रदर्शन करें। इसमें कुछ सेकंड लगते हैं और स्प्लैश स्क्रीन प्रदर्शित होने से पहले इसे करने की आवश्यकता होती है।
  3. प्रदर्शन स्पलैश स्क्रीन। यह स्प्लैश स्क्रीन अधिक गहन प्रारंभ में प्रगति प्रदर्शित करती है और थोड़ी देर ले सकती है (डेटाबेस से कैश की जानकारी)।
  4. डिफ़ॉल्ट कर्सर प्रदर्शित करें। चूंकि स्प्लैश स्क्रीन अब प्रगति प्रदर्शित कर रही है, इसलिए एक व्यस्त कर्सर प्रदर्शित करने की कोई आवश्यकता नहीं है।
  5. एक बार स्प्लैश स्क्रीन प्रगति पूर्ण हो जाने पर, मुख्य विंडो प्रदर्शित करें।
  6. स्पलैश स्क्रीन बंद करें।

स्प्लैश स्क्रीन प्रदर्शित होने से पहले व्यस्त कर्सर को प्रदर्शित करने के अलावा सब कुछ ठीक काम करता है। जब मैं शॉर्टकट के माध्यम से एप्लिकेशन निष्पादित करता हूं, तो प्रतीक्षा कर्सर चमकता है, लेकिन जल्द ही डिफ़ॉल्ट पर वापस चला जाता है। मैंने कर्सर को सेट करने के विभिन्न तरीकों का प्रयास किया है लेकिन कोई काम नहीं है, लेकिन मुझे लगता है कि समस्या यह है कि मैं नियंत्रण/खिड़की में नहीं हूं - मैं इसे App.xaml.cs. में से कर रहा हूं। और, जो गुण मैं सेटिंग कर रहा हूं वह विंडोज फॉर्म गुण प्रतीत होता है। App.xaml.cs. में मेरे कोड से एक अंश यहां दिया गया है।

protected override void OnStartup(StartupEventArgs e) 
{ 
    base.OnStartup(e); 

    System.Windows.Forms.Application.UseWaitCursor = true; 
    //System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; 
    //System.Windows.Forms.Application.DoEvents(); 

    Initialize(); 

    SplashWindow splash = new SplashWindow(); 
    splash.Show(); 

    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; 

    // Right now I'm showing main window right after splash screen but I will eventually wait until splash screen closes. 
    MainWindow main = new MainWindow(); 
    main.Show(); 
} 

उत्तर

38

यह

Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait; 

उपयोग System.Windows.Input नहीं System.Windows.Forms काम करना चाहिए।

+0

जोड़ा गया है कि और यह अभी भी पहले की तरह ही कार्य करता है। अगर मैं इसे प्रारंभ में सेट करने के बाद ओवरराइड कर्सर को शून्य पर रीसेट नहीं करता हूं, तो जब मैं कर्सर को विंडो पर रखता हूं तो प्रतीक्षा कर्सर प्रदर्शित होता है। लेकिन, यह तब नहीं दिखाया जाता है जब ऐप शुरू में शुरू होता है। – bsh152s

+0

हम्म, मैं थोड़ी देर के लिए इसके साथ खेल रहा हूं, ऐसा लगता है कि वास्तविक विंडो के बाहर कर्सर को बदलने में असंभव नहीं है (आप इस कोड के साथ भी देखेंगे कि माउस छोड़ने पर प्रतीक्षा कर्सर चला जाता है खिड़की)। क्षमा करें मैं और अधिक मदद नहीं कर सका। –

+0

यह अच्छा है। बस इसे सेट करें। कर्सर मान केवल विंडो के लिए इसे बदलता है, अगर आप नियंत्रण पर होवर करते हैं तो आपको डिफ़ॉल्ट कर्सर मिलता है और प्रतीक्षा कर्सर नहीं। माउस। ओवरराइड कर्सर खिड़की के लिए प्रतीक्षा कर्सर और इसमें सब कुछ सेट करने लगता है। –

18

आप एक काम है कि समय की एक महत्वपूर्ण राशि लेता है, और इसे एक गैर-जीयूआई धागा पर चल रहा है (जो एक अच्छा विचार है) आप आवेदन कर्सर को बदलने के लिए इस कोड का उपयोग कर सकते हैं:

Application.Current.Dispatcher.Invoke(() => 
{ 
    Mouse.OverrideCursor = Cursors.Wait; 
}); 

जब व्यस्त प्रक्रिया को पूरा करता है, इस का उपयोग करें:

Application.Current.Dispatcher.Invoke(() => 
{ 
    Mouse.OverrideCursor = null; 
}); 
2

मैं प्रारंभ (यह मानते हुए कर रहा हूँ), बात यह है कि आप अपने व्यस्त कर्सर के लिए प्रकट करना चाहते हैं, हाँ? अपने MainWindow.xaml में

  1. , <Window> तत्व पर, निम्नलिखित गुण सेट:

    यदि हां, तो निम्नलिखित तरीके का प्रयास करें Visibility="Hidden" और Cursor="Wait"

  2. अपने MainWindow.xaml.cs में, कन्स्ट्रक्टर के प्रारंभिक कोड को एक सार्वजनिक प्रारंभिक() विधि में ले जाएं, ताकि प्रारंभिक() कॉल पर निर्भर कोई भी कोड निष्पादित न हो। सुनिश्चित करें कि आपकी आरंभिक() विधि का अंत Visiblity संपत्ति Visible पर सेट करता है और Cursor को रीसेट करता है।
  3. अद्यतन कोड स्निपेट निम्नलिखित की तरह कुछ करने के लिए ऊपर पोस्ट:
protected override void OnStartup(StartupEventArgs e) 
{ 
    base.OnStartup(e); 

    MainWindow main = new MainWindow(); 
    main.Show(); // this should set the cursor how you want it 
    Initialize(); 
    SplashWindow splash = new SplashWindow(); 
    splash.Show(); 
    main.Initialize(); // now invoke the Initialize method you created 
    // Right now I'm showing main window right after splash screen but I will eventually wait until splash screen closes. 
} 
0
 Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait; 
     InitializeComponent(); 
     ... 
     Mouse.OverrideCursor = null; 
संबंधित मुद्दे