问题1.当我的Majorlabel为空时,我有这个问题“对象引用没有设置为对象的实例”,这是在我尝试单击xml序列化后执行保存按钮后发生的。我怎样才能解决这个问题?
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string savepath;
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Where do you want to save the file?";
// Startup directory
DialogSave.InitialDirectory = @"C:/";
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = null;
FormSaving abc = new FormSaving();
if (!string.IsNullOrEmpty(MajorversionresultLabel.Content.ToString()))
{
abc.Majorversion = MajorversionresultLabel.Content.ToString();
}
abc.Startzbuildfrom = StartzbuildcomboBox.SelectedItem.ToString();
using (Stream savestream = new FileStream(savepath, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
serializer.Serialize(savestream, abc);
}
}
根据建议, 这是误差线:
if (!string.IsNullOrEmpty(MajorversionresultLabel.Content.ToString()))
{
abc.Majorversion = MajorversionresultLabel.Content.ToString();
}
问题2.我使用此行保存我的组合框选择:
abc.Startzbuildfrom = StartzbuildcomboBox.SelectedItem.ToString();
在我的负载中我有这一行:
StartzbuildcomboBox.SelectedItem = abc.Startzbuildfrom
为什么以前不选择组合框选择?
答案 0 :(得分:1)
首先,我建议在这里只将一个问题放入一个查询中。使其更容易。
对于你的第二个问题,我的猜测是你遇到了引用变量问题。我认为在SelectedItem上调用ToString()方法实际上会创建一个全新的字符串变量。然后,当您尝试稍后设置所选项目时,它无法找到新字符串作为要选择的可能项目,因为即使两个字符串具有相同的值,它们也是不同的对象。我可能会建议您:
1)通过搜索组合框内容来设置所选项目,以查找其值与您保存的字符串相匹配的字符串
或
2)通过说abc.Startzbuildfrom = StartzbuildcomboBox.SelectedItem保存实际引用。然后从该参考中设置所选项目。
答案 1 :(得分:0)
我怀疑MajorversionresultLabel为null,或者MajorversionresultLabel.Content为null。因此你的陈述
if (!string.IsNullOrEmpty(MajorversionresultLabel.Content.ToString()))
将抛出NullReferenceException。试试这个:
if (MajorversionresultLabel != null && MajorversionresultLabel.Content != null && MajorversionLabel.Content.ToString() != string.Empty)
我打赌你的NullReferenceException会消失。