关闭表单后如何保留 numericupdown 的值
How to retain the value from an numericupdown after closing a form
我有以下问题。我正在使用 C# .NET,我想在关闭表单后在 numericupdown 框中保存一个值。在我的应用程序中,我总共有 2 个表单,所以我想保存在第二个表单中输入的值,再次打开它后,我想查看最后一个值。在我的例子中,在我再次打开第二个表单后,numericupdown 值是空的。
我在想这样的事情:
namespace Project2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
decimal a = numericUpDown1.Value;
label2.Text = "N: " + a;
}
}
}
但是再次打开还是空的
您可以使用 static variable
来存储最后更新的值,并参考 class 名称,您可以在任何需要的地方使用它。
From MSDN: Two common uses of static fields are to keep a count of the number of
objects that have been instantiated, or to store a value that must
be shared among all instances.
喜欢,
namespace Project2
{
public partial class Form2 : Form
{
public static decimal lastNumericUpDownValue = 0;
public Form2()
{
//For example: thiw will print lastest saved Numeric updown value.
//For the first time, it will print 0
Console.WriteLine(Form2.lastNumericUpDownValue);
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Assign value to lastNumericUpDownValue variable. Look at how it is used.
Form2.lastNumericUpDownValue = numericUpDown1.Value;
}
}
}
您可以创建一个 class,在本例中使用以下方法为 NumericUpDown 控件提供 set/get。
public sealed class Setting
{
private static readonly Lazy<Setting> Lazy =
new Lazy<Setting>(() => new Setting());
public static Setting Instance => Lazy.Value;
public decimal NumericUpDownValue { get; set; }
}
在子窗体中,OnShown 将值 属性 设置为 Settings.NumericUpDownValue 然后 OnClosing 记住该值。
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
Shown += (sender, args) =>
numericUpDown1.DataBindings.Add("Value", Setting.Instance,
nameof(Setting.NumericUpDownValue));
Closing += (sender, args) =>
Setting.Instance.NumericUpDownValue = numericUpDown1.Value;
}
}
上面的代码,特别是设置 class 被称为单例模式,您可以在 Implementing the Singleton Pattern in C# 中了解更多信息。
我有以下问题。我正在使用 C# .NET,我想在关闭表单后在 numericupdown 框中保存一个值。在我的应用程序中,我总共有 2 个表单,所以我想保存在第二个表单中输入的值,再次打开它后,我想查看最后一个值。在我的例子中,在我再次打开第二个表单后,numericupdown 值是空的。
我在想这样的事情:
namespace Project2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
decimal a = numericUpDown1.Value;
label2.Text = "N: " + a;
}
}
}
但是再次打开还是空的
您可以使用 static variable
来存储最后更新的值,并参考 class 名称,您可以在任何需要的地方使用它。
From MSDN: Two common uses of static fields are to keep a count of the number of objects that have been instantiated, or to store a value that must be shared among all instances.
喜欢,
namespace Project2
{
public partial class Form2 : Form
{
public static decimal lastNumericUpDownValue = 0;
public Form2()
{
//For example: thiw will print lastest saved Numeric updown value.
//For the first time, it will print 0
Console.WriteLine(Form2.lastNumericUpDownValue);
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Assign value to lastNumericUpDownValue variable. Look at how it is used.
Form2.lastNumericUpDownValue = numericUpDown1.Value;
}
}
}
您可以创建一个 class,在本例中使用以下方法为 NumericUpDown 控件提供 set/get。
public sealed class Setting
{
private static readonly Lazy<Setting> Lazy =
new Lazy<Setting>(() => new Setting());
public static Setting Instance => Lazy.Value;
public decimal NumericUpDownValue { get; set; }
}
在子窗体中,OnShown 将值 属性 设置为 Settings.NumericUpDownValue 然后 OnClosing 记住该值。
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
Shown += (sender, args) =>
numericUpDown1.DataBindings.Add("Value", Setting.Instance,
nameof(Setting.NumericUpDownValue));
Closing += (sender, args) =>
Setting.Instance.NumericUpDownValue = numericUpDown1.Value;
}
}
上面的代码,特别是设置 class 被称为单例模式,您可以在 Implementing the Singleton Pattern in C# 中了解更多信息。