假设我们有一个带有保存工具栏按钮的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. 启用和禁用GWT页面上的保存按钮
- 3. 永久禁用保存按钮并提交后启用编辑按钮
- 4. 启用/禁用MGWT按钮
- 5. 启用/禁用按钮
- 6. 按钮 - 启用和禁用
- 7. 启用和禁用按钮
- 8. 禁用/启用按钮
- 9. Java启用/禁用按钮
- 10. 禁用和启用按钮
- 11. 正确禁用提交按钮
- 12. 如何禁用保存按钮
- 13. TinyMCE的 - 禁用标准保存按钮
- 14. 在gridview中禁用保存按钮
- 15. 禁用按钮并在重新启动后保存
- 16. 使用jQuery禁用/启用按钮
- 17. 使用jquery.validationEngine启用/禁用按钮
- 18. 使用jquery禁用启用按钮
- 19. 使用KO禁用\启用Bootbox按钮
- 20. 使用javascript启用/禁用按钮
- 21. 使用jquery禁用/启用按钮
- 22. 启用禁用按钮asp.net - 使用javascript
- 23. 使用ng-disabled启用/禁用按钮
- 24. 禁用Xcode存档按钮
- 25. asp按钮保持禁用,即使启用它
- 26. 如何禁用1按钮,但保持其他人启用
- 27. 要禁用/启用按钮的形式
- 28. jquery 1.8禁用/启用提交按钮
- 29. 启用禁用按钮在jsf 2.2
- 30. asp禁用或启用按钮
你可以用段落和更容易阅读的东西重新说话! :) – 2012-07-27 13:43:29
大多数文本编辑器只是不打扰。处理撤消对上次保存版本的更改,但手动编辑回到之前的版本只需要太多的检查。 – MPelletier 2012-07-27 13:45:18
好吧,我主要是想着一个“IsDirty”逻辑,它可以跟踪每个控件的状态作为一个对象,并保留这些对象的备份,比较它们,确定它是否脏。然后启用保存按钮。 – Bohn 2012-07-27 15:15:21