private void clearBoard()
{
button1.Text = null;
button2.Text = null;
button3.Text = null;
button4.Text = null;
button5.Text = null;
button6.Text = null;
button7.Text = null;
button8.Text = null;
button9.Text = null;
}
我有9个按钮。 (button1
- button9
)。我希望他们都清除文本。
有更有效的方法可以做到这一点,而不是通常清除每一个吗?
顺便说一句,我知道我可以创建一系列按钮但是在这里,所有按钮都是从窗口手动创建的。所以也许这里不可能。
答案 0 :(得分:5)
如果要清除表单中所有按钮的文本,请使用:
foreach (Control b in this.Controls.OfType<Button>())
b.Text = string.Empty;
但是如果你只想要9个按钮的明文,有各种方法,其中包括以下两个:
for (int i = 1; i <= 9; i++)
{
var button = this.Controls.OfType<Button>().Where(b => b.Name == "button" + i).FirstOrDefault();
if (button != null) button.Text = string.Empty;
}
或者你也可以使用这个:
List<Button> listButtons = new List<Button>() { button1, button2, button3,
button4, button5, button6, button7, button8, button9 };
foreach (var item in listButtons)
item.Text = string.Empty;
答案 1 :(得分:3)
我能想到的唯一增强功能是将按钮放在列表或数组中。如果手动创建按钮,一种方法是在表单中声明成员变量:
public partial class Form1 : Form
{
private List<Button> buttons = new List<Button>();
//...
}
在创建按钮时将其添加到该列表中:
private void CreateNextButton()
{
Button button = new Button();
// initialize button
Controls.Add(button);
// add button to your list
buttons.Add(button);
}
然后将clearBoard
更改为:
private void clearBoard()
{
foreach(Button button in buttons) button.Text = string.Empty;
}
答案 2 :(得分:1)
我认为更简单的形式是遍历页面的控件,并仅为按钮设置text属性。
protected void Page_Load(object sender, EventArgs e)
{
foreach (Control control in Page.Controls)
{
if (control is Button)
{
((Button)control).Text = string.Empty;
}
}
}
不要忘记你应该遍历按钮分层的父控件。如果它们在div中,则遍历该div(比如它的id是myDiv) - 如:
foreach(Control control in myDiv.Controls)
答案 3 :(得分:0)
您可以循环浏览控件并检查它是否为Button
,如果是,请将Text
属性设置为null
foreach (var button in this.Controls)
{
if (button is Button)
{
((Button)button).Text = null;
}
}
答案 4 :(得分:0)
如果他们在Window本身,你可以做
private void ClearButton()
{
foreach (var control in this.Controls)
{
Button btn = control as Button;
if (btn != null)
{
btn.Text = string.Empty;
}
}
}