总结下wpf窗体交互等问题
wpf/winform子窗体交互
初学wpf总会遇到这些问题,因为经常会调用子窗体,打开新窗体,传值等!今天一次性搞懂这些常见错误吧,子窗体交互 其实就是类之间的交互或者传递。
一、显示 隐藏子窗体
显示问题我推荐showdialog吧,目前觉得用起来比较舒服,我们来看看Showdialog:
ShowDialog在关闭时(close),比如点击 X 关闭,这种就是析构了,所以我们需要另寻他法
public partial class LoginWindow : Window
{
//登录窗体构造
public LoginWindow()
{
InitializeComponent();
patternSelectWindow = new PatternSelectWindow();
}
//子窗体声明
PatternSelectWindow patternSelectWindow;
private void Button_Click(object sender, RoutedEventArgs e)
{
patternSelectWindow.ShowDialog();
}
}
我们想要实现点击showdialog按钮 就弹出一个子窗体,并且子窗体关闭后再点击这个还能出现刚才的窗体。
但是很多人选择重新new,可是比如textbox的数据就会释放了。
如下错误:
那么解决方法是在子窗体调用完成想关闭它时,不直接点击关闭X。
插入如下代码在子窗体:
/// <summary>
/// PatternSelectWindow.xaml 的交互逻辑
/// </summary>
public partial class PatternSelectWindow : Window
{
public PatternSelectWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//点击隐藏
this.Hide();
}
}
点击这个hidden按钮,子窗体成功隐藏,再次点击showdialog按钮,重新出现。
this.Hide();
只是隐藏并 不是析构 该类。
**
当然,最后关闭时一定注意关闭所有线程!!
**
Environment.Exit(0); // 强制关闭所有线程 终止此进程