假設我們有一個帶有保存工具欄按鈕的Win32窗體,並且一些CheckBox等控件位於窗體上,現在我們爲複選框的onchange事件編寫一行代碼以啓用/禁用保存按鈕。假設首先選中複選框,禁用保存按鈕,現在取消選擇複選框,保存按鈕變爲啓用...現在再次選擇複選框保存按鈕仍然啓用...例如,對於TextBox也是如此。假設它的文本是「Hi」...將其更改爲「Hi Bye」,保存已啓用...將其更改爲「Hi」,保持啓用... 是否有我們可以使用的模型防止這些錯誤的啓用/禁用保存按鈕?正確啓用/禁用保存按鈕
回答
我不明白你在哪裏與你的複選框去,但我會用一個布爾變量:
private Boolean _canSave = false;
private Boolean CanSave
{
get { return _canSave; }
set
{
_canSave = value;
MenuSave.Enabled = value;
}
}
public void MenuSave_Click()
{
Save();
}
private void Save()
{
// do your thing
CanSave = false;
}
public void TextBox_TextChanged()
{
CanSave = true;
}
當你恢復文本回到這不會考慮禁用保存菜單它的原始。如果需要,您必須將Save()
方法中的文本存儲在專用變量中,並將其與每個TextBox_TextChanged()
上的當前文本進行比較,以確定是否發生了與原始(即自上次保存以來)相比的變化。
是的我主要是想着一個「IsDirty」邏輯,它可以跟蹤每個控件的狀態作爲一個對象,並且還保留這些對象的備份,比較他們,決定是否髒......然後啓用保存按鈕... – Bohn 2012-07-27 15:13:48
您需要在複選框的CheckedChanged
事件中編寫一些IF - ELSE
代碼。通過檢查控件的屬性(複選框)來檢查當前狀態是什麼,如果是,則將Button的Enabled proeprty設置爲true,否則爲false。
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
button1.Enabled = true;
else
button1.Enabled = false;
}
假設checkBox2
是複選框的名字和button1
是保存按鈕的名稱。
也可以對其他控件使用相同的IF ELSE邏輯。要設置文本框的值,可以使用Text屬性
TextBox1.Text="I am gonna try something now"l
編輯:作爲comecme建議,如果你只想要啓用基於該checbox /禁用按鈕,它可以在一個行來完成,而不是這樣
button1.Enabled=checkBox2.Checked
我喜歡的if else塊把我所有的控制狀態檢查和設置成一個單一的方法:
private void UpdateControls()
{
saveButton.Enabled = checkBox1.Checked;
otherButton.Visible = checkBox2.Checked && textBox.Text.Length > 0;
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
UpdateControls();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
UpdateControls();
}
private void textBox_TextChanged(object sender, EventArgs e)
{
UpdateControls();
}
這意味着你只需要一個地方來檢查和設置狀態,並且更容易理解正在發生的事情,特別是當你有複雜的表單時。在分配布爾變量時,我也更喜歡布爾表達式而不是if語句,因爲它無需編寫單獨的else語句(可能會被遺忘),從而迎合true和false。
我主要是想着一個「IsDirty」邏輯,它可以跟蹤每個控件的狀態作爲一個對象,並保留這些對象的備份,比較它們,確定它是否髒。然後啓用保存按鈕。 – Bohn 2012-07-27 15:16:52
- 1. 禁用Excel保存按鈕
- 2. Javascript - 單選按鈕啓用/禁用元素不正確
- 3. 啓用和禁用GWT頁面上的保存按鈕
- 4. 永久禁用保存按鈕並提交後啓用編輯按鈕
- 5. 啓用/禁用AWT按鈕
- 6. 按鈕 - 啓用和禁用
- 7. 啓用禁用按鈕
- 8. 啓用/禁用MGWT按鈕
- 9. 按鈕不啓用/禁用
- 10. 啓用/禁用按鈕
- 11. 禁用/啓用按鈕
- 12. 按鈕禁用和啓用
- 13. 啓用和禁用按鈕
- 14. 禁用/啓用按鈕
- 15. 禁用和啓用按鈕
- 16. Python:ttk:禁用/啓用按鈕
- 17. Java啓用/禁用按鈕
- 18. 正確禁用提交按鈕
- 19. 在extjs4.2保存後禁用按鈕
- 20. 禁用保存按鈕的工作
- 21. 在gridview中禁用保存按鈕
- 22. 如何禁用保存按鈕
- 23. 的javascript禁用Excel的保存按鈕
- 24. TinyMCE的 - 禁用標準保存按鈕
- 25. 禁用按鈕並在重新啓動後保存
- 26. 禁用提交但確保按下後退按鈕後重新啓用
- 27. 如何啓用TinyMCE保存按鈕?
- 28. 使用KO禁用\啓用Bootbox按鈕
- 29. 使用啓用和禁用按鈕
- 30. 使用jQuery禁用/啓用按鈕
你可以用段落和更容易閱讀的東西重新說話! :) – 2012-07-27 13:43:29
大多數文本編輯器只是不打擾。處理撤消對上次保存版本的更改,但手動編輯回到之前的版本只需要太多的檢查。 – MPelletier 2012-07-27 13:45:18
好吧,我主要是想着一個「IsDirty」邏輯,它可以跟蹤每個控件的狀態作爲一個對象,並保留這些對象的備份,比較它們,確定它是否髒。然後啓用保存按鈕。 – Bohn 2012-07-27 15:15:21