【发布时间】:2021-05-15 04:09:42
【问题描述】:
我有一个程序,它根据一些过滤器(股票数量、名称包含 X、价格等)从数据库中获取一些产品来设置过滤器我打开一个包含所有参数的新窗口,当他们点击保存时创建一个文件,主窗口打开以读取过滤器。 有没有更有效的方法来做到这一点? 谢谢。
【问题讨论】:
我有一个程序,它根据一些过滤器(股票数量、名称包含 X、价格等)从数据库中获取一些产品来设置过滤器我打开一个包含所有参数的新窗口,当他们点击保存时创建一个文件,主窗口打开以读取过滤器。 有没有更有效的方法来做到这一点? 谢谢。
【问题讨论】:
是的,我相信有一种更有效的方法可以完成您想做的事情。您可以创建一个窗口,在您关闭它后,它会返回一些价值。 (类似于 OpenFileDialog)
首先,如果您还没有创建一个描述一组过滤器的类。
class FilterSet
{
public string NameSubString { get; set; }
public int MinStock { get; set; }
public double MinPrice { get; set; }
public double MaxPrice { get; set; }
...
}
然后将此FilterSet 类作为公共(私有集)属性添加到您用于输入过滤器的窗口中。
public partial class SearchFiltersWindow : Window
{
public FilterSet Filters { get; private set; }
...
}
使用它来设置窗口中的所有输入参数。
现在确保您在该窗口上有一个 Ok 和一个 Cancel 按钮。这将用于指示用户是否成功输入。将两个按钮上的 IsDefault 和 IsCancel 分别设置为 true,并将它们设置为都关闭窗口。还要确保在按下 OK 按钮时将 DialogResult 属性设置为 true。
private void OkButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
现在剩下的唯一一件事就是在窗口关闭后从窗口中获取FilterSet。这是您可以在MainWindow 中使用的代码,用于打开过滤器窗口并在关闭时从那里获取输入的参数。
SearchFiltersWindow window = new SearchFiltersWindow();
if (window.ShowDialog() == true) // ShowDialog() will return the subwindow's DialogResult when it's closed
DoStuffWith(window.Filters);
【讨论】: