gpt4 book ai didi

c# - 我如何创建一个方法类型 bool 并循环控制来决定案例?

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:33 25 4
gpt4 key购买 nike

private bool LoopOverControls(bool reset, bool checkIfEmpty)
{
bool results;
foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
if (reset == true)
(ctrl as TextBox).Text = "";
if (checkIfEmpty == true)
results = true;
}
}
return results;
}

我想在代码的某些地方使用该方法。每次我想制作一个我可以调用的方法时,都需要再次循环控制。

之前的方法是:

private void LoopOvercontrols(bool reset, bool checkIfEmpty)
{
foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
if (reset == true)
(ctrl as TextBox).Text = "";
if (checkIfEmpty == true)

}
}
}

这是我在我的代码中使用控件循环的地方,首先是在构造函数中:我检查文本框是否不为空,然后在这种情况下执行一些操作,更改 btnReset enable true。

foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
(ctrl as TextBox).TextChanged += on_TextChanged;
if ((ctrl as TextBox).Text != "")
{
btnReset.Enabled = true;
}
}
}

然后这次我在另一个事件中检查文本框是否为空并将 btnReset 启用设置为 false:

foreach (Control ctrl in this.Controls)
{
if ((ctrl as TextBox) != null)
{
(ctrl as TextBox).TextChanged += on_TextChanged;
if ((ctrl as TextBox).Text == "")
{
btnReset.Enabled = false;
}
}
}

到目前为止,我在两个地方遍历文本框,但我可能想稍后在其他地方再次遍历它们。问题是如何制作 LoopOverControls 方法,以便我可以决定使用 bool 以及某些情况下的其他属性,并在决策中使用按钮或其他控件?

最佳答案

您可以编写一个方法来接收要执行的操作作为参数。
这个新方法的工作是枚举所有文本框并为每个文本框调用操作方法。

public void TextBoxEnumerateAndAction(Action<TextBox> execute)
{
// Get just the TextBoxes, no need of ugly casts...
foreach(TextBox t in this.Controls.OfType<TextBox>())
{
execute?.Invoke(t);
// This part is common to every textbox, so it can stay inside the
// enumeration loop....
btnReset.Enabled = !string.IsNullOrEmpty(t.Text)
}
}

现在定义要传递给 TextBoxEnumerateAndAction 的 Action 方法

void AddTextChangedHandler(TextBox t)
{
t.TextChanged += on_TextChanged;
}
void RemoveTextChangedHandler(TextBox t)
{
t.TextChanged -= on_TextChanged;
}

因此,在任何需要添加或删除可以调用的 TextChanged 处理程序的地方

TextBoxEnumerateAndAction(AddTextChangedHandler);

或者,如果您有更奇特的情况,您可以简单地定义另一个传递给 TextBoxEnumerateAndAction 的操作

关于c# - 我如何创建一个方法类型 bool 并循环控制来决定案例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42921900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com