C# WPF.MDI,点击关闭按键后,如何在Closing中取消该关闭操作? 5
/// 子窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void AddMidChild(object sender, RoutedEventArgs e)
{
try
{
WPF.MDI.MdiChild mdichild = new WPF.MDI.MdiChild();
mdichild.Content = e.Source as UIElement;
mdichild.Width = (sender as UserControl).Width;
mdichild.Height = (sender as UserControl).Height;
mdichild.Tag = (sender as UserControl).Tag.ToString();
mdichild.Resizable = true;
mdichild.Closing += new RoutedEventHandler(MdiChild_Closing);
mdichild.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(MdiChild_PreviewMouseButtonDown);
this.Container.Children.Add(mdichild);
}
catch (Exception ex)
{
//不允许任何错误造成函数推出
}
}
/// <summary>
/// 子窗体关闭
void MdiChild_Closing ( object sender , RoutedEventArgs e )
{
//条件符合,取消关闭
} 展开
emmm,这个问题很好解决
.net Framework在Closing事件中提供了取消Close动作的事件,方法如下:
using System.ComponentModel; //为了简化代码,引用的添加是必须的
//下面一行代码加在你触发this.Close();事件的前面,或者直接加在初始化窗体的代码中
this.Closing += Window_Closing; //绑定Closing事件到Window_Closing方法
//下面的方法加在哪里都无所谓
private void Window_Closing(object sender, CancelEventArgs e)
{
e.Cancel = true; //指示取消Closing操作
}
单窗体基于C#的WPF程序示例(xaml代码我就不写了,因为根本没涉及到)
<*.xaml.cs>
using System.Windows;
using System.ComponentModel;
namespace * //这里的*是你自己项目的根命名空间,自行补齐,不要更改,否则会引起编译错误
{
/// <summary>
/// *.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Closing += Window_Closing;
}
private void Window_Closing(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
}
}
//以上代码在VS2015中测试成功,直接生成一个标准WPF项目并粘贴到cs文件即可
刚接触C#,是枚小白。想实现:点击WPF.MDI中的子窗体右上角的关闭按键,若该窗体线程正在运行,则隐藏该窗体,但不关闭;否则,直接关闭。可在代码中的Closing事件中实现嘛?如果不可行,还有其他解决方法嘛?