我目前正在完成一项作业,需要设置一个类似计算器的程序。它需要读取一个或两个用户输入的值(根据计算而定),然后根据这些值执行计算。
我目前有:
- 2个文本框(tbInput1和tbInput2) - 4个单选按钮 - 一个按钮(btnCalc) - 一个空标签(label),用于显示结果
其中两个单选按钮(rbtnTrap和rbtnFak)在选中时会禁用第一个文本框,另外两个单选按钮需要输入两个值,因此在选中时启用两个文本框。btnCalc应在相关数量的文本框有值时启用--相关数量的文本框取决于哪个单选按钮被选中。
问题是,当我选中rbtnTrap或rbtnFak(禁用tbInput1)并在tbInput2中输入整数时,btnCalc仍然保持禁用状态。
我试着解释一下我目前的做法:
- 在tbInput1的_TextChanged事件中,我有下面第二个if块的精确副本。当选中rbtnPot或rbtnFib时,tbInput1才处于活动状态,因此只有在这种情况下才运行该控件。 - 在tbInput2的_TextChanged事件中,由于tbInput2始终处于启用状态,而且无论选中哪个单选按钮,该控件都必须运行,因此我有下面的代码。但是,如果我选中rbtnTrap或rbtnFak而不是rbtnPot或rbtnFib,则该控件应以不同的方式运行。
以上是我的理解,欢迎给出建议和纠正。
我目前有:
- 2个文本框(tbInput1和tbInput2) - 4个单选按钮 - 一个按钮(btnCalc) - 一个空标签(label),用于显示结果
其中两个单选按钮(rbtnTrap和rbtnFak)在选中时会禁用第一个文本框,另外两个单选按钮需要输入两个值,因此在选中时启用两个文本框。btnCalc应在相关数量的文本框有值时启用--相关数量的文本框取决于哪个单选按钮被选中。
问题是,当我选中rbtnTrap或rbtnFak(禁用tbInput1)并在tbInput2中输入整数时,btnCalc仍然保持禁用状态。
我试着解释一下我目前的做法:
- 在tbInput1的_TextChanged事件中,我有下面第二个if块的精确副本。当选中rbtnPot或rbtnFib时,tbInput1才处于活动状态,因此只有在这种情况下才运行该控件。 - 在tbInput2的_TextChanged事件中,由于tbInput2始终处于启用状态,而且无论选中哪个单选按钮,该控件都必须运行,因此我有下面的代码。但是,如果我选中rbtnTrap或rbtnFak而不是rbtnPot或rbtnFib,则该控件应以不同的方式运行。
以上是我的理解,欢迎给出建议和纠正。
private void tbInput2_TextChanged(object sender, EventArgs e)
{
//For single-field values
if ((rbtnTrap.Checked || rbtnFak.Checked) &&
!string.IsNullOrWhiteSpace(this.tbInput2.Text))
{
btnCalc.Enabled = true;
}
else
{
btnCalc.Enabled = false;
}
// For multi-field values
if ((rbtnPot.Checked || rbtnFib.Checked) &&
(!string.IsNullOrWhiteSpace(this.tbInput1.Text)
&& !string.IsNullOrWhiteSpace(this.tbInput2.Text)))
{
btnCalc.Enabled = true;
}
else
{
btnCalc.Enabled = false;
}
}
someObject.Dispose()
中的“disposing”术语吗?(请参见我的编辑以解决您的问题) - Otielprotected override void Dispose(bool disposing)
,在它下面是if (disposing && (components != null))
。显然不是你想要的。感谢您的编辑和建议。我会尝试调整我的代码,停止在正确的子句之后进行检查。 :) - Xarth