启用基于textBox和radiobutton的按钮

时间:2011-11-26 08:10:15

标签: c# winforms

我正在做家庭作业,我需要设置一个计算器类型的程序。它需要读取一个或两个用户输入值(取决于计算),然后根据值执行计算。

我目前有

  • 2个文本框(tbInput1tbInput2),
  • 4 radioButtons,
  • 一个按钮(btnCalc
  • 空白label,其中将显示结果。

两个radioButtons(rbtnTraprbtnFak)在选中时禁用第一个textBox;另外两个需要输入两个值,因此在选中时启用两个textBox。当相关数量的textBoxes具有值时,btnCalc应该启用自身 - 相关的textBoxes数量取决于检查哪个单选按钮。

问题在于,当我检查rbtnTraprbtnFak(停用tbInput1)并在tbInput2中输入整数时,btnCalc会一直处于停用状态。

我会试着解释一下到目前为止:

  • _TextChanged的{​​{1}}事件中,我有下面发布的第二个tbInput1块的完整副本。 if仅在选中tbInput1rbtnPot时处于活动状态,因此只有在这种情况下才会运行控件。
  • rbtnFib的{​​{1}}事件中,我有以下内容,因为_TextChanged 始终已启用,并且无论哪个单选按钮都必须运行控件如果我检查tbInput2tbInput2而不是rbtnTraprbtnFak,则控件的运行方式会有所不同。

或者那就是我对它的理解。我当然愿意接受建议和更正。

rbtnPot

2 个答案:

答案 0 :(得分:2)

因为它是一个家庭作业,我不会给你直接的答案,而是提示:问题出在tbInput2_TextChanged事件的代码中(你发布的代码)。

选中rbtnTraprbtnFak后,您的代码将按照您认为不会的路径运行。在tbInput2_TextChanged代码的第一行设置断点( F9 ),并在{{1}中输入一些文本后逐步运行代码( F10 ) }}。
您会看到为什么按钮tbInput2按照您的想法启用,但在下一刻禁用

如果您之后需要更多帮助,请随时发表评论。 :)


修改

问题来自您的btnCalc阻止。选中ifrbtnTrap之一时:

  • 您的代码将在第一个块的rbtnFak子句中运行,然后执行if但是......
  • 它也将在第二个块的btnCalc.Enabled = true;子句中运行(因为else为false),因此执行(rbtnPot.Checked || rbtnFib.Checked)

答案 1 :(得分:0)

我不确定我对你的问题有多了解(对不起,解释有点遍布),但我确实看到的一件事是你只在一个地方实施你的测试有两个要检查的控件的事件。

这听起来像是一个简单的问题,但我真的无法理解在哪里实现了什么以及谁应该做什么,所以如果我的2美分以上没用,你可以再次解释这个问题,这可能会有所帮助寻找解决方案