我正试图将一个字符串传递给一个公共类(customPanel(。
但是"teststring"
从未被传递并写入testfile.txt
testfile.txt
写入一个空字符串。
private void button1_Click(object sender, EventArgs e)
{
customPanel cp = new customPanel();
cp.getinfo = "teststring";
}
public class customPanel : System.Windows.Forms.Panel
{
public String getinfo { get; set; }
public customPanel() { InitializeComponent(); }
private void InitializeComponent()
{
String gi = getinfo;
System.IO.FileStream fs = new System.IO.FileStream("C:/folder1/testfile.txt", System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite);
System.IO.StreamWriter writer = new System.IO.StreamWriter(fs);
writer.WriteLine(gi); writer.Close(); fs.Close();
}
}
您遇到的问题是由于代码的执行顺序造成的。
基本上,当您调用new customPanel()
时,将调用构造函数方法controlPanel()
。因此,当您设置getInfo
值时,已经调用了InitializeComponent()
方法。
在不了解上下文的情况下,简单的解决方案是将字符串作为参数传递给构造函数。基本上切换controlPanel()
以接收string variableName
作为参数,就像这个controlPanel(string variableName)
一样,然后在调用InitializeComponent();
之前用this.getInfo = variableName;
设置属性的值。
如果这有帮助,请告诉我!
小心。