我有一个带菜单栏,菜单和menuItem(称为BlaBlub)的WinForm
菜单项CheckOnClick = True
和(ApplicationSettings)->(PropertyBindings)->Checked
映射到设置SomeBool
(类型为bool,范围用户,初始值= false)
从设置文件中正确读取值(我使用标签检查它,并且当我在会话之间更改文件时,菜单项也会被选中/取消选择)。
但是,使用以下代码我无法打开应用程序,单击菜单项并将更改后的值存储回文件
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.Save();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = string.Format("Value is: {0}", Properties.Settings.Default.SomeBool);
}
我能够使用以下代码将值存储回文件中,但由于这似乎不是惯用的方法,我仍然会寻求一些如何做到这一点的启发。
private void blaBlubToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.SomeBool = blaBlubToolStripMenuItem.Checked;
}
答案 0 :(得分:1)
你说:
从设置文件中正确读取值
但是,根据提供的代码,这是不正确的,因为在加载时您没有设置检查状态。相反,我认为您的测试显示初始持久设置值(为false)也是菜单项的默认Checked状态。
因此,您还应通过添加以下内容来初始化控件:
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = string.Format("Value is: {0}", Properties.Settings.Default.SomeBool);
blaBlubToolStripMenuItem.Checked = Properties.Settings.Default.SomeBool;
}
注意:通常我会告诉你使用数据绑定,但你不能,因为我相信MenuItem不支持这个。