如何循环使用群组控制按钮

问题描述 投票:0回答:3

嗨,每个人我都有一个包含有 47 个按钮的组控件的表单,因此,我想循环遍历所有按钮,并在找到匹配项时将每个按钮的文本(button.text)与 textbox.text 进行比较,然后按钮将被禁用..如何做到这一点请帮助!!!!!!

我正在尝试以下代码。

private void simpleButton1_Click(object sender, EventArgs e)
{

    int seatno = int.Parse(textEdit1.Text.Trim().ToString());
    foreach (Button c in gp_seatss.Controls)
    {
        foreach (string str in Convert.ToString( c.Text))
        {
            if (str == Convert.ToString(seatno))
            {
                c.Enabled = false;
            }
        }
        return;
    }
}
c# winforms
3个回答
1
投票

循环遍历

Button
的所有
Groupbox
并设置条件:

foreach (Button btn in groupBox1.Controls.OfType<Button>())
{
    if (btn.Text == textBox1.Text)
        btn.Enabled = false;
}

0
投票
    private void myMethod(Control.ControlCollection controls, string text)
    {
        foreach (Control ctrl in controls)
        {
            if (ctrl is Button)
                ctrl.Enabled = ctrl.Text != text;

            if (ctrl.HasChildren)
                myMethod(ctrl.Controls, text);
        }
    }

0
投票

您对自己想要的东西不太具体。例如,如果

TxtTextBox1.Text
BtnButton1.Text
匹配,则禁用
BtnButton1
,或者如果
TxtTextBox1.Text
与 GroupBox 中的任何按钮匹配,则只需禁用与
TxtBox1.Text
匹配的按钮。我制作了一个迭代具有 20 个文本框和 20 个按钮的 GroupBox 的示例。在此示例中,无论哪个按钮文本与正在键入的文本框匹配,都会禁用该按钮。将此方法放置在所有文本框的 textchange 事件中。例如

TxtTextBox1.TextChanged(object sender, EventArgs e) {

   CompareText();
} 
// And so on ...

  internal void CompareText() {

  foreach(TextBox tTextBox in GrpGroupBox1.Controls.OfType<TextBox>().ToList()) {

      foreach(Button bButton in GrpGroupBox1.Controls.OfType<Button>().ToList()) {
          
          if(tTextBox != null && bButton != null) {

              if(!string.IsNullOrWhiteSpace(tTextBox.Text)) {

                  tTextBox.TextChanged += (sender, e) => {

                      if(bButton.Text.Equals(tTextBox.Text.Trim())) {

                          bButton.Enabled = false;
                      }
                  };
              }
          }
      }
   }
}

更好的方法是将

CompareText
方法放入类库中并从那里调用它,但这需要更多代码,这只是一个基本示例,可帮助您入门并尝试直到您掌握您想要的结果。

我希望这有帮助。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.