禁用NumericUpdown C#

禁用NumericUpdown C#,c#,C#,学生回来了!我想自学C#,所以请原谅我简单但很多的问题。谢谢大家 我正在开发一个测验应用程序。我想要但似乎无法实现的是,当选择“测试模式”(单选按钮)时,“问题数”需要灰显。否则,学生可以选择要尝试的问题数。 这是我的密码 private void rdotesting_CheckedChanged(object sender, EventArgs e) { if (MessageBox.Show("You have selected Testing Mod

学生回来了!我想自学C#,所以请原谅我简单但很多的问题。谢谢大家

我正在开发一个测验应用程序。我想要但似乎无法实现的是,当选择“测试模式”(单选按钮)时,“问题数”需要灰显。否则,学生可以选择要尝试的问题数。

这是我的密码

private void rdotesting_CheckedChanged(object sender, EventArgs e)
    {

        if (MessageBox.Show("You have selected Testing Mode.Do you want to continue?", "Confirm Choice", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
        {
            MessageBox.Show("Click 'Start' to continue..");
            btnclose.Hide();
        }
            else 
            {
              MessageBox.Show("You Must select an option to continue.");
            
            }
        
    }
            //if testing mode, dissable number of questions ,and also the 'Close' button

像这样-见评论

private void rdotesting_CheckedChanged(object sender, EventArgs e)
{

    //this event fires when rdotesting is checked or when it is unchecked (change)
    //set the enabled state of the nud/button to th opposite of the checked state
    //ie when checked = true then enabled = false
    numberQsNUD.Enabled = !rdotesting.Checked;
    closeButton.Enabled = !rdotesting.Checked;

    //if not in test mode, exit to stop the message showing every time
    if(!rdotesting.Checked)
      return;

    

    if (MessageBox.Show("You have selected Testing Mode.Do you want to continue?", "Confirm Choice", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
      rdotesting.Checked = false; //user said no; turn off test mode

像这样-见评论

private void rdotesting_CheckedChanged(object sender, EventArgs e)
{

    //this event fires when rdotesting is checked or when it is unchecked (change)
    //set the enabled state of the nud/button to th opposite of the checked state
    //ie when checked = true then enabled = false
    numberQsNUD.Enabled = !rdotesting.Checked;
    closeButton.Enabled = !rdotesting.Checked;

    //if not in test mode, exit to stop the message showing every time
    if(!rdotesting.Checked)
      return;

    

    if (MessageBox.Show("You have selected Testing Mode.Do you want to continue?", "Confirm Choice", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
      rdotesting.Checked = false; //user said no; turn off test mode

简单地说,你可以试试这个代码

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
     numberQsNUD.Enabled = false;
     closeButton.Enabled = false;
  } else {
     numberQsNUD.Enabled = true;
     closeButton.Enabled = true;
   }      
}
private void EnableComponent(bool check) {
     numberQsNUD.Enabled = check;
     closeButton.Enabled = check;
}

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
    EnableComponent(false);
  } else {
    EnableComponent(true);
   }      
}

或者,您可以通过使用此代码自定义此项

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
     numberQsNUD.Enabled = false;
     closeButton.Enabled = false;
  } else {
     numberQsNUD.Enabled = true;
     closeButton.Enabled = true;
   }      
}
private void EnableComponent(bool check) {
     numberQsNUD.Enabled = check;
     closeButton.Enabled = check;
}

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
    EnableComponent(false);
  } else {
    EnableComponent(true);
   }      
}

简单地说,你可以试试这个代码

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
     numberQsNUD.Enabled = false;
     closeButton.Enabled = false;
  } else {
     numberQsNUD.Enabled = true;
     closeButton.Enabled = true;
   }      
}
private void EnableComponent(bool check) {
     numberQsNUD.Enabled = check;
     closeButton.Enabled = check;
}

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
    EnableComponent(false);
  } else {
    EnableComponent(true);
   }      
}

或者,您可以通过使用此代码自定义此项

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
     numberQsNUD.Enabled = false;
     closeButton.Enabled = false;
  } else {
     numberQsNUD.Enabled = true;
     closeButton.Enabled = true;
   }      
}
private void EnableComponent(bool check) {
     numberQsNUD.Enabled = check;
     closeButton.Enabled = check;
}

private void rdotesting_CheckedChanged(object sender, EventArgs e) {
  if(rdotesting.Checked) {
    EnableComponent(false);
  } else {
    EnableComponent(true);
   }      
}

如果选择测试,则设置
NumUpDown.Enabled=false
;代码中的Bug;当单选按钮未选中时,checkedchanged将触发。如果选择了测试,则设置
NumUpDown.Enabled=false
;代码中的Bug;当单选按钮未选中时,checkedchanged将启动,这也非常有用。只是另外一个问题…我希望在选择(学习或测试模式)之前禁用“开始”按钮。我该怎么做?这很有帮助。只是另外一个问题…我希望在选择(学习或测试模式)之前禁用“开始”按钮。我该怎么做?这很有帮助。只是另外一个问题…我希望在选择(学习或测试模式)之前禁用“开始”按钮。我该怎么做呢?在窗体设计器的属性中将其设置为enabled=false,然后在每个单选按钮上都有两个事件处理程序(每个单选按钮上都有一个-您已经在rdotesting上有一个,所以只需添加另一个),并在每个处理程序集中设置startButton.enabled=true。。。这样一来,用户点击哪一个东西并不重要;一个或另一个会导致startBUtton.Enabled=True工作得很好。谢谢你,这很有帮助。只是另外一个问题…我希望在选择(学习或测试模式)之前禁用“开始”按钮。我该怎么做呢?在窗体设计器的属性中将其设置为enabled=false,然后在每个单选按钮上都有两个事件处理程序(每个单选按钮上都有一个-您已经在rdotesting上有一个,所以只需添加另一个),并在每个处理程序集中设置startButton.enabled=true。。。这样一来,用户点击哪一个东西并不重要;一个或另一个会导致startBUtton.Enabled=True工作得很好。谢谢Caius