[英].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.