Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有快捷方式影响窗体上出现的几个按钮?_C#_Winforms - Fatal编程技术网

C# 是否有快捷方式影响窗体上出现的几个按钮?

C# 是否有快捷方式影响窗体上出现的几个按钮?,c#,winforms,C#,Winforms,我有9个按钮。(button1-button9)。我希望他们都把课文讲完。 有没有更有效的方法来实现这一点,而不是正常地清除每一个 顺便说一句,我知道我可以创建按钮数组,但在这里,所有的按钮都是从窗口手动创建的。因此,也许在这里这是不可能的。我能想到的唯一改进就是将按钮放入列表或数组中。如果手动创建按钮,一种方法是在表单中声明成员变量: private void clearBoard() { button1.Text = null; button2.Text = null;

我有9个按钮。(
button1
-
button9
)。我希望他们都把课文讲完。 有没有更有效的方法来实现这一点,而不是正常地清除每一个


顺便说一句,我知道我可以创建按钮数组,但在这里,所有的按钮都是从窗口手动创建的。因此,也许在这里这是不可能的。

我能想到的唯一改进就是将按钮放入列表或数组中。如果手动创建按钮,一种方法是在表单中声明成员变量:

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;
} 
然后将
clearBoard
更改为:

private void CreateNextButton()
{
    Button button = new Button();
    // initialize button
    Controls.Add(button);

    // add button to your list
    buttons.Add(button);
}

我认为更简单的形式是循环页面的控件,并仅为按钮设置文本属性

private void clearBoard()
{
    foreach(Button button in buttons) button.Text = string.Empty; 
} 
不要忘记,应该在按钮分层的父控件上循环。如果它们在一个div中,则在该div上循环(假设它的id是myDiv)-例如:


您可以在控件中循环并检查它是否是
按钮
,如果是,请将
文本
属性设置为

foreach(Control control in myDiv.Controls)

如果要清除表单中所有按钮的文本,请使用以下命令:

foreach (var button in this.Controls)
{
    if (button is Button)
    {
        ((Button)button).Text = null;
    }
}
foreach(此.Controls.OfType()中的控件b)
b、 Text=string.Empty;
但是,如果您只需要9个按钮的明文,则有多种方法,其中包括以下两种:

foreach (Control b in this.Controls.OfType<Button>())
        b.Text = string.Empty;
for(inti=1;ib.Name==“button”+i).FirstOrDefault();
如果(button!=null)button.Text=string.Empty;
}
或者您也可以使用:

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 listButtons=new List(){button1,button2,button3,
按钮4,按钮5,按钮6,按钮7,按钮8,按钮9};
foreach(列表按钮中的变量项)
item.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;  

WinForms?网络表单?ASP.NETMVC?WPF?我更喜欢自己制作按钮列表。在表单中搜索控件的速度很慢。试试这个:List buttons=newlist(){button1,button2};如果他的表单上还有其他按钮怎么办?OP从未说过他想清除
表单上的所有按钮,但只清除这些特定的9。如果没有更多的按钮,我更喜欢你的答案。谢谢,如果我添加其他按钮,它会导致一个问题。其他方法不是这样吗?:int i=0,For(……{button{0}.text=null;i++;}???只需要空的9个按钮或所有添加的按钮?只需清除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;  
private void ClearButton()
{
    foreach (var control in this.Controls)
    {
        Button btn = control as Button;
        if (btn != null)
        {
            btn.Text = string.Empty;
        }
    }
}