我有一个程序,可以根据一些过滤器(股票数量、名称包含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; }
...
}
使用此选项可以设置窗口中的所有输入参数。
现在,请确保您在该窗口上有一个确定和取消按钮。这将用于指示用户是否成功输入。在两个按钮上分别将IsDefault和IsCancel设置为true
,并将其设置为关闭窗口。此外,请确保在按下"确定"按钮时将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);