我在程序中创建了一个保存选项,用于保存对文件的更改。我正在使用此代码保存并获取MessageBox
以显示进程的结果我在此行中收到错误“对象引用未设置为对象的实例。”
SaveFileCheck = StockHandler.SaveChangesToFile();
这是我的代码
private void Save_Click(object sender, EventArgs e)
{
bool SaveFileCheck = false;
var result = MessageBox.Show("Are you sure you want to Save the changes ?", "My Application",
MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (result == DialogResult.Yes)
{
SaveFileCheck = StockHandler.SaveChangesToFile();
if (SaveFileCheck)
{
MessageBox.Show("The process was a success");
}
else
{
MessageBox.Show("The process failed please make sure that the file is not been used and try again");
}
//Save the file back
}
}
}
}
public bool SaveChangesToFile()
{
try
{
if (FileName != null)
{
using (StreamWriter Write = new StreamWriter(FileName, false))
{
foreach (Stock s in FileStockList)
{
Write.Write(s.ToString() + "\r\n");
}
}
}
else {
return false;
}
}
catch(IOException ex)
{
return false;
throw new ArgumentException("something went wrong an error" + ex + "is been cought");
}
return true;
}
答案 0 :(得分:2)
StockHandler
为空。
如果StockHandler
不是static
类,则需要先创建它的实例,然后再调用其中的方法:
var handler = new StockHandler();
SaveFileCheck = handler.SaveChangesToFile();
或者,如果StockHandler
是成员变量:
StockHandler = new // something
答案 1 :(得分:2)
你没有显示StockHandler
是什么,或者你从哪里得到它 - 但看起来它是空的。您需要它作为对有效对象的引用。我们只能从您提供的代码中说出更多内容。
请注意,这与返回bool
的方法 nothing 无关。
答案 2 :(得分:1)
可能StockHandler
为空,或者SaveChangesToFile
方法中的某些内容为null或无效。
修改强>
见这里:
private StockHelper StockHandler;
StockHandler.SaveChangesToFile(); // = bang :(
您需要初始化StockHelper
实例:
private StockHelper StockHandler = new StockHelper();
StockHandler.SaveChangesToFile(); // = okay :)
我假设此代码无法编译,这可能意味着StockHandler
为空。否则,错误可能指向SaveChangesToFile
方法。
其次,您需要在SaveChangesToFile()
方法中吞下异常(不建议),或者需要删除return语句并抛出异常。如果您决定抛出异常,它绝对不应该是ArgumentException
,因为它与提供给方法的参数(或缺少参数)无关。
答案 3 :(得分:0)
什么是stockhandler - 你的SaveChangesToFile方法是一个实例方法 - 所以你有一个变量'StockHandler'实例化到任何类的实例包含方法SaveChangesToFile();