在WindowsForms中,我有一个独立的类 Indicators.cs 和一个表单 Food 。在课堂上,我有一个变量,我在表单中进行了更改。
当我打开表单时,更改变量,关闭表单并再次打开它(不关闭程序),然后变量的值是旧的。为什么这样?
形式:
namespace WF
{
public partial class Computer : Form
{
Indicators indicators = new Indicators();
public Computer()
{
if (indicators.isComputerAlreadyRunning == false)
indicators.isComputerAlreadyRunning = true;
}
}
}
Indicators.cs
namespace WF
{
class Indicators
{
public Indicators()
{
this.isComputerAlreadyRunning = false;
}
public bool isComputerAlreadyRunning;
}
}
答案 0 :(得分:1)
在表单类中创建一个显示表单并返回结果的方法。这类似于MessageBox.Show方法。在下面的示例中,FoodForm有一个名为ShowForm的方法。此方法返回一个名为FoodFormResult的自定义类,该类具有窗体关闭后所需的所有结果。
public FoodFormResult ShowForm()
{
return new FoodFormResult(
ShowDialog() == DialogResult.OK,
_indicators);
}
每次创建表单类(例如new FoodForm())时,表单中的所有现有值都将丢失。
答案 1 :(得分:1)
有很多方法可以做到这一点。你可以创建一个委托,保存到表单的资源,保存到外部文件,保存到设置/ Appconfig文件......所以...
另一个但不太建议出于安全原因选项是:您可以在应用程序的main方法中创建内部或公共静态变量。然后当您需要设置此变量时..
当你需要调用那个变量时:
//Your main method example
static class Program
{
internal static bool AreYouOKAY = false;
// or public static bool as your needs
static void Main ()
{
........
}
/// And in your form
Program.AreYouOKAY = true;
// After your form closed.. from another form just call as above
if(Program.AreYouOKAY)
{
MessageBox.Show (" Yeah! I'm Ok!");
}