我有一个带有全局变量的 Windows 窗体应用程序 - 一个名为testPath
.
此字符串用于保存路径 - 默认情况下是C:\temp\
. 当用户单击按钮时,将创建此目录(如果它不存在)。
还有一个文本框控件,以防用户想要更改路径的值。
在按钮的事件处理程序中,我尝试访问testPath
并得到一个空引用。
我不会更改testPath
任何地方的值,除非我将它传入和传出文本框控件。
我究竟做错了什么?全局变量如何在一秒钟内有一些东西,然后它指向一个空引用?
这是完整的代码:
public string testPath = @"C:\temp\";
public MainForm()
{
//Windows Designer call
InitializeComponent();
//Show the testPath in the textBox (using Invokes)
this.textBox1.Invoke(new MethodInvoker(delegate { this.textBox1.Text = testPath; } ));
//here, testPath contains 'C:\temp\'
}
//Button "Click" handler
private void Button1Click(object sender, EventArgs e)
{
//here, testPath contains a null reference!
//If the user changed testPath in the textBox, we need to save it again
this.textBox1.Invoke(new MethodInvoker(delegate { testPath = this.textBox1.Text; } ));
//Create the path
if(!Directory.Exists(testPath)) //If it does not exist already
{
Directory.CreateDirectory(testPath);
}
//...Do something else
}