イベントハンドラーの使用に慣れていないので、Close/Closedイベントでコードを実行するイベントハンドラーの使用方法を示すコードを誰かが持っているか、または指示できるかどうか疑問に思っていましたか?
これは、この回答された質問のために実行できることを知っています。
しかし、私はいくつかの方向性が必要です。
ありがとうございます=)
それはこのXAMLだけです
<Window ... Closing="Window_Closing" Closed="Window_Closed">
...
</Window>
Closing
およびClosed
イベントの両方のコード
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
...
}
private void Window_Closed(object sender, EventArgs e)
{
....
}
あなたがそれをすべてコードビハインドで行いたいなら、これをあなたのwindows .csファイルに入れてください
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Closed += new EventHandler(MainWindow_Closed);
}
void MainWindow_Closed(object sender, EventArgs e)
{
//Put your close code here
}
}
}
Xamlで一部を行い、コードビハインドで一部を行いたい場合は、これをxamlで行います。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Closed="MainWindow_Closed">
<Grid>
</Grid>
</Window>
そしてこれは.cs
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
void MainWindow_Closed(object sender, EventArgs e)
{
//Put your close code here
}
}
}
上記の例は、xamlアプリの任意のフォームに適用できます。複数のフォームを持つことができます。アプリケーション終了プロセス全体にコードを適用する場合は、app.xaml.csファイルを次のように変更します
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnExit(ExitEventArgs e)
{
try
{
//Put your special code here
}
finally
{
base.OnExit(e);
}
}
}
}
次のようにApp.Xaml.csのOnExit関数をオーバーライドできます。
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnExit(ExitEventArgs e)
{
//do your things
base.OnExit(e);
}
}
Josh SmithのMVVMに関する記事には、ワークスペースの一部であるViewModelの良い例と、閉じるときに何をすべきかが示されています。このアーキテクチャは、ウィンドウを閉じるだけでなく、ViewModelsなどをクリーンアップすることで拡張できます。
図7では、あなたが話している状況を説明しています。お役に立てれば!
Microsoft Visual StudioでC#を使用している場合、以下がうまくいきました。
Window.csファイル
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace Name_Space
{
public partial class Window : Form
{
public Window()
{
InitializeComponent();
//...
}
private void Window_Load(object sender, EventArgs e)
{
//...
}
private void Window_Closed(object sender, EventArgs e)
{
// Your code goes here...!
}
}
}
Window.Designer.csファイルで、この行を次のメソッドに追加します
...
private void InitializeComponent()
{
...
//
// Window
//
...
this.Closed += new System.EventHandler(this.Window_Closed); // <-- add this line
}
...