我有一个带有菜单栏、菜单和menuItem (称为BlaBlub)的WinForm。
菜单项将CheckOnClick = True
和(ApplicationSettings)->(PropertyBindings)->Checked
映射到设置SomeBool
(类型bool,范围用户,初始value= 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;
}
发布于 2011-08-05 05:43:22
你说过:
从设置文件中正确读取值
然而,根据所提供的代码,这是不正确的,因为在加载时,您没有设置选中状态。相反,我认为您的测试显示初始持久化设置值(为false)也是菜单项的默认选中状态。
因此,您还应该通过添加以下内容来初始化控件:
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不支持这一点。
https://stackoverflow.com/questions/6951606
复制相似问题