WPF proqramından proqramlaşdırılmış şəkildə necə çıxış etmək olar?

C # (WinForms) istifadə edəndə bir neçə ildir ki, mən heç vaxt WPF-ni istifadə etməmişəm. Ancaq indi mən WPF-i sevirəm, lakin istifadəçi "Fayl" menyusundan "Çıx" menyusunu tıkladığında tətbiqdən necə çıxmalı olduğumu bilmirəm.

Mən çalışdım:

 this.Dispose(); this.Exit(); Application.ShutDown(); Application.Exit(); Application.Dispose(); 

Digərləri arasında. Heç bir iş yoxdur.

338
12 мая '10 в 18:37 2010-05-12 18:37 anon271334 tərəfindən təyin 12 May '10 at 6:37 PM 2010-05-12 18:37
@ 13 cavab

Proqramdan çıxmaq üçün zəng edə bilərsiniz

 System.Windows.Application.Current.Shutdown(); 

Application.Shutdown sənədində təsvir edildiyi kimi, siz də ShutdownMode funksiyası ilə tətbiqin bağlanması davranışını dəyişdirə bilərsiniz:

Kapatma, Windows Təqdimat Fondu (WPF) aşağıdakı hallarda örtülü olaraq səbəb oldu:

  • ShutdownMode OnLastWindowClose olaraq təyin olunduqda.
  • ShutdownMode parametri OnMainWindowClose olaraq təyin edildikdə.
  • Bir istifadəçi bir sessiyanı sona çatdıqda və SessionEnding hadisə ya işlənməmiş və ya ləğv edilmədən idarə olunur.

Ayrıca Qeyd: Application.Current.Shutdown(); yalnız Application obyektini yaradan mövzudan çağırıla bilər, yəni. adətən əsas mövzu.

567
12 мая '10 в 18:39 2010-05-12 18:39 Dirk Vollmar tərəfindən 12 May 'da 18:39' da cavab 2010-05-12 18:39

Həqiqətən onu bağlamağınız lazımdırsa, Environment.Exit () istifadə edə bilərsiniz, amma bu tamamilə zərif deyil (tamamlama prosesi kimi).

Aşağıdakıları istifadə edin:

border=0
 Environment.Exit(0) 
105
29 янв. Cavab 29 yanvarda John tərəfindən verilir . 2012-01-29 05:41 '12 at 5:41 am 2012-01-29 05:41

Sözügedən wuminqi kimi, Application.Current.Shutdown(); geri dönməz və mən inanıram ki, adətən bir istifadəçi bir proqramı məcburi şəkildə bağlamaq üçün istifadə olunur, məsələn, bir istifadəçi Windows-dan çıxarkən və ya Windows'u bağladıqda. Bunun əvəzinə, bu this.close() . Bu, "ALT-F4" düyməsini basmaqla və ya pəncərədə yaxın [x] düyməsinə bənzəyir. Bu bütün digər qapalı pəncərələri bağlayacaq və Application.Current.Shutdown(); çağırır Application.Current.Shutdown(); bağlanma hərəkatı ləğv olunana qədər. Pəncərəni bağlamaqda MSDN sənədlərinə baxın.

Əlavə olaraq, this.close() ləğv edildikdən sonra, yekun hadisə işləyicisinə dəyişiklik təsdiqini this.close() bilərsiniz. Yalnız <Window Closing="..."> e.Cancel <Window Closing="..."> üçün bir hadisə işləyicisi yaradın və e.Cancel ə dəyişin. (Bunu necə etmək barədə ətraflı məlumat üçün MSDN sənədinə baxın .

46
29 янв. Cavab Allen Pestaluky tərəfindən 29 yanvarda verilir . 2012-01-29 05:31 '12 at 5:31 am 2012-01-29 05:31

Bu hiylə olmalı:

 Application.Current.Shutdown(); 

Maraqlıysanız, mənə kömək etdiyimiz bir neçə əlavə material var:

Tətbiqlə bağlı məlumatlar .Cari

WPF tətbiqi həyat dövrü

21
12 мая '10 в 18:38 2010-05-12 18:38 12 May 'da saat 18:38' də Brian MacKay'a cavab verdi 2010-05-12 18:38

Lazım gələrsə aşağıdakılardan hər hansı birini istifadə edin:

1.

  App.Current.Shutdown(); OR Application.Current.Shutdown(); 

2

  App.Current.MainWindow.Close(); OR Application.Current.MainWindow.Close(); 

Əvvəla, üsullar Window sinifinin closing event çağırır və icra bir nöqtədə dayandıra bilər (adətən tətbiqlər tipli informasiya qutularını qoyur ) əmin oldunuz? ' və ya' Bağlanmadan əvvəl məlumatları saxlamaq istəyirsinizmi? 'Pəncərə tamamilə bağlanılmadan əvvəl)

3. Lakin tətbiqi dərhal xəbərdarlıq etmədən bağlamaq istəyirsinizsə. Aşağıdakıları istifadə edin

  Environment.Exit(0); 
19
22 янв. Cavab Kylo Ren Jan 22 verilir 2016-01-22 21:33 '16 at 21:33 2016-01-22 21:33

Application.ShutDown () olmamalıdır; və ya .Exit ().

Ərizə statik bir sinifdir. Mövcud tətbiqə tətbiq edilmir. Sizə mövcud proqrama keçməlisiniz və sonra onu aşağıdakı kimi bağlamaq lazımdır:

 Application.Current.Shutdown(); 
14
12 мая '10 в 18:41 2010-05-12 18:41 12 May 'da saat 18: 41' da TimothyP tərəfindən cavablandırılmışdır 2010-05-12 18:41

Mənim etdiyim işlər belədir:

 // Any control that causes the Window.Closing even to trigger. private void MenuItemExit_Click(object sender, RoutedEventArgs e) { this.Close(); } // Method to handle the Window.Closing event. private void Window_Closing(object sender, CancelEventArgs e) { var response = MessageBox.Show("Do you really want to exit?", "Exiting...", MessageBoxButton.YesNo, MessageBoxImage.Exclamation); if (response == MessageBoxResult.No) { e.Cancel = true; } else { Application.Current.Shutdown(); } } 

Yalnız ana proqram penceresinden Application.Current.ShutDown() çağırıram, bütün digər pencereler bu this.Close() . Mənim əsas pəncərədə, Window_Closing(...) , yuxarı sağ düyməni x işlənir. Metodlardan hər hansı birinin yanaşmasına səbəb olarsa, Window_Closing(...) istifadəçi təsdiq edərsə hadisəni tamamlayır.

Mən, həqiqətən, əsas pəncərədə Application.Current.ShutDown() istifadə edirəm - bu, bir dizayn səhv edildikdə və tətbiqdə pəncərəmdən birinin valideynini elan etmədiyimi anladım, əgər bu pəncərə sonuncu aktivdən əvvəl göstərmədən açılsa Pəncərəni bağlayaraq arxa planda çalışan gizli pəncərəm var. Ərizə bağlanılmayacaq. Tam yaddaş sızmasının qarşısını almaq üçün yeganə yol, proqramı bağlamaq üçün Görev Yöneticisi'ne daxil etməkdir. Application.Current.ShutDown() məni istəməyən dizayn qüsurlarından qoruyur.

Bu mənim şəxsi təcrübəm. Nəticədə, ssenariniz üçün ən yaxşısını istifadə edin. Bu yalnız bir daha məlumatdır.

13
08 февр. cavab BK 08 feb verilir . 2014-02-08 04:20 '14 at 4:20 2014-02-08 04:20
 private void _MenuExit_Click(object sender, RoutedEventArgs e) { System.Windows.Application.Current.MainWindow.Close(); } //Override the onClose method in the Application Main window protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { MessageBoxResult result = MessageBox.Show("Do you really want to close", "", MessageBoxButton.OKCancel); if (result == MessageBoxResult.Cancel) { e.Cancel = true; } base.OnClosing(e); } 
5
25 февр. Cavab Ravi 25 fevralda verilir. 2014-02-25 20:01 '14 saat 20:01 'də 2014-02-25 20:01

Keçir

 App.Current.Shutdown(); 

Mənim üçün

 Application.Current.Shutdown(); 

işləmir.

5
25 марта '15 в 15:56 2015-03-25 15:56 Cavab Iwona Kubowicz tərəfindən 25 Mart 2015 15:56 ' də verilir 2015-03-25 15:56

Mənim fikrimcə, Application.Current.Shutdown() da öz qüsuruna malikdir,

istifadəçilər oturduğunuzu təsdiqləmələri üçün bir təsdiq qutusunu göstərmək istəyirsinizsə, Application.Current.Shutdown() geri qaytarılmır.

4
13 мая '10 в 8:24 2010-05-13 08:24 Cavab 13 may 2010- cu il tarixində saat 8: 24-da verilir

Mikro flavored Caliburn

 public class CloseAppResult : CancelResult { public override void Execute(CoroutineExecutionContext context) { Application.Current.Shutdown(); base.Execute(context); } } public class CancelResult : Result { public override void Execute(CoroutineExecutionContext context) { OnCompleted(this, new ResultCompletionEventArgs { WasCancelled = true }); } } 
0
04 авг. Anders 04 aug tərəfindən verilmiş cavab 2015-08-04 10:55 '15 at 10:55 'də 2015-08-04 10:55

Pəncərəni bağlamaq üçün MainWindow.xaml.cs faylına this.Close() üsulunu istifadə edə bilərik.

Və ya App.Current.Shutdown() bağlamaq üçün MainWindow.xaml.cs faylında App.Current.Shutdown() metodunu istifadə edin.

0
19 июля '17 в 15:28 2017-07-19 15:28 Cavab Bhushan Shimpi tərəfindən 19 iyul '17 'də 15:28 2017-07-19 15:28' də verilir

Çox sadə, aşağıdakı kodu istifadə edin.

 Application.Current.Shutdown(); 
-1
13 авг. Cavab Tijo Tom 13 aug tərəfindən verilir . 2014-08-13 13:13 '14 'da 13:13 2014-08-13 13:13

haqqında digər suallar və ya bir sual