我在c#中使用wpf。
问题1:我创建了一个wpf窗口。有没有办法通过按钮点击事件加载以前用户输入的表单字段?
问题2:所以在我加载表单的字段后,我想创建一个清除按钮来清除表单的所有字段。有没有办法实现这个目标?
感谢。
编辑1
我目前正在努力使用XML序列化,尝试阅读但我仍然很丢失。据我所知,我将创建一个新类,我将在我的应用程序中有一个“保存”按钮和“加载”按钮。我有几个组合框,每个组合框已经填充了一些XML文件。我也有文本框,复选框可供他们填写。因此,一旦用户输入表单,我希望他们“保存”表单条目,并能够随时“加载”它们。我还研究了filebrowserdialog,它将打开一个浏览器供用户探索并在某个目录中保存旧表单的副本,但是现在我只在我的代码中有这个:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
var dialog = new System.Windows.Forms.FolderBrowserDialog();
System.Windows.Forms.DialogResult result = dialog.ShowDialog();
}
这远非我目前所要求的。
我认为我很丢失,特别是在为组合框值创建新类的部分。如果可能请指导我。如果你也可以指导我文本框和组合框值,我也将不胜感激。感谢。
这就是我填充组合框的方式:
public void PopulateDDLFromXMLFile()
{
DataSet ds = new DataSet();
ds.ReadXml("C:\\GUI\\buildermanageremail.xml");
DataView dv = ds.Tables["builder"].DefaultView;
DataView dw = ds.Tables["manager"].DefaultView;
dv.Sort = "value";
comboBox1.ItemsSource = dv; //Sets the collection of items from which to populate
comboBox2.ItemsSource = dw;
comboBox1.DisplayMemberPath = "value"; //Sets the path within an item to use for display
comboBox2.DisplayMemberPath = "value";
}
答案 0 :(得分:0)
确定可能..您可以将每个用户条目存储在数据库或临时文件(序列化)中,并在加载表单时将其显示在文本框中,或者如您所述,您有一个按钮来执行此操作。它类似于在标签/文本框或Gridview中显示表单上数据库时通常所做的操作。
但要使其工作,您需要首先保存用户条目。您可以使用允许用户保存数据的按钮,也可以在控件的Texthange / LostFocus事件中执行此操作。
如果你不需要持久化数据,你可以将它们存储在变量中,并将它们保存在内存中直到应用程序的生命周期。
要清除表单,示例代码就像;
foreach(Control ctl in this.Controls)
{
TextBox tbx = ctl as TextBox;
if(tbx != null)
{
tbx.Text = String.Empty;
}
}
答案 1 :(得分:0)
如果要将所有数据移出到Model对象(使用MVVM分隔这些图层)将所有控件绑定到模型上的属性,那么您只需将模型序列化为文件即可在加载时保存和反序列化。
清除按钮可以简单地创建模型的新实例,为实现此目的而编写最少的代码。