首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >.NET WinForms PropertyBinding

.NET WinForms PropertyBinding
EN

Stack Overflow用户
提问于 2011-08-05 12:54:10
回答 1查看 1.1K关注 0票数 0

我有一个带有菜单栏、菜单和menuItem (称为BlaBlub)的WinForm。

菜单项将CheckOnClick = True(ApplicationSettings)->(PropertyBindings)->Checked映射到设置SomeBool (类型bool,范围用户,初始value= false)

从设置文件中正确读取该值(我使用标签来检查它,并且当我在两次会话之间对文件进行更改时,菜单项也被选中/取消选中)。

但是,使用以下代码我无法打开应用程序,单击菜单项并将更改后的值存储回文件中

代码语言:javascript
代码运行次数:0
运行
复制
    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);
    }

我能够使用以下代码将值存储回文件中,但由于这似乎不是惯用的方法,因此我仍然寻求一些关于如何做到这一点的启发。

代码语言:javascript
代码运行次数:0
运行
复制
    private void blaBlubToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
    {
        Properties.Settings.Default.SomeBool = blaBlubToolStripMenuItem.Checked;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-05 13:43:22

你说过:

从设置文件中正确读取值

然而,根据所提供的代码,这是不正确的,因为在加载时,您没有设置选中状态。相反,我认为您的测试显示初始持久化设置值(为false)也是菜单项的默认选中状态。

因此,您还应该通过添加以下内容来初始化控件:

代码语言:javascript
代码运行次数:0
运行
复制
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不支持这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6951606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档