嗨,每个人我都有一个包含有 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;
}
}
循环遍历
Button
的所有Groupbox
并设置条件:
foreach (Button btn in groupBox1.Controls.OfType<Button>())
{
if (btn.Text == textBox1.Text)
btn.Enabled = false;
}
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);
}
}
您对自己想要的东西不太具体。例如,如果
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
方法放入类库中并从那里调用它,但这需要更多代码,这只是一个基本示例,可帮助您入门并尝试直到您掌握您想要的结果。
我希望这有帮助。