一直在玩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多个背景色。
答案 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;