C#一次更改多个backcolor RichTextBoxes

时间:2016-06-01 02:33:38

标签: c#

一直在玩C#而遇到了一些我难以接受的事情。基本上,我有多个RichTextBox,我想通过点击一个按钮一次改变所有的背景颜色。我知道快速而肮脏的方式只是:

    richTextBox1.BackColor = Color.Green;
    richTextBox2.BackColor = Color.Green;
    ...
    richTextBoxn.BackColor = Color.Green;

但对于像100多个盒子这样的东西,我试图在编程方面瞄准一些小巧的东西。我正在研究使用for循环来解决我的问题:

    var richTextBox = new RichTextBox[6];

        for (var i = 1; i < 7; i++)
        {
            var s = new RichTextBox();

            this.Controls.Add(s);

            richTextBox[i].BackColor = Color.Green;
        }

但是当我运行代码时,我遇到了一个异常问题“发生了'System.NullReferenceException'类型的未处理异常......”

我希望能够立即改变多个RichTextBoxes / TextBoxes的背景色,而不必编写100多行代码,如果我想一次控制100多个背景色。

2 个答案:

答案 0 :(得分:0)

通过使用var s = new RichTextBox();,您将在每次迭代中创建一个新的RichTextBox并将它们绑定到表单/ Container。在这种情况下,您需要做的是,在每次迭代中将BackColor分配给新的RichTextBox。那是;

for (int i = 1; i < 7; i++)
{
    var richBox = new RichTextBox();
    richBox.BackColor = Color.Green;
    this.Controls.Add(richBox);
}

在这种情况下,您不需要使用var richTextBox数组,如果您使用的是var richTextBox数组,那么您的代码将是这样的:

var richBoxArray = new RichTextBox[6];
for (var i = 1; i < 7; i++)
{
    richBoxArray[i].BackColor = Color.Green;
    this.Controls.Add(richBoxArray[i]);
}

按评论更新:

所以问题是那个;

  

如何更改已存在的RichTextBoxes的背景颜色   以我的形式

所以答案是:

foreach(var richBox in this.Controls.OfType<RichTextBox>())
    richBox.BackgroundColor = Color.Green;

答案 1 :(得分:0)

如果要更改表单上的所有richtextbox,可以执行以下操作:

foreach(var rtb in this.Controls.OfType<RichTextBox>())
    rtb.BackgroundColor = Color.Green;