簡體   English   中英

.NET WinForms PropertyBinding

[英].NET WinForms PropertyBinding

我有一個帶有菜單欄,菜單和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;
    }

你說:

從設置文件中正確讀取值

但是,根據顯示的代碼,這將是不正確的,因為在加載時,您沒有設置檢查狀態。 相反,我認為您的測試顯示初始持久設置值(為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不支持此功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM