C# 在 for 循环中将 RichTextBoxes 数组添加到 TabPages 数组

C# Adding an array of RichTextBoxes to an array of TabPages in a for loop

还有我的代码:

 using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

namespace inform
{
    public partial class Form1 : Form
    {
        public static TabPage[] TabPages = new TabPage[20];
        public static RichTextBox[] TextBoxes = new RichTextBox[20];

        public Form1()
        {
            InitializeComponent();
            TabControl.TabPages.Clear();
            for (int x = 0; x < 19; x++)
            {
                TabPages[x].Controls.Add(TextBoxes[x]);    //ERROR HERE
                //Object reference not set to an instance of an object.
                TabControl.TabPages.Add(TabPages[x]);
                }
            }

            private void Form1_Load(object sender, EventArgs e)
            {

            }
        }
    }

我正在尝试制作一个基本的打字程序,它使用 tabcontrol 来组织数组中的每个 richtextbox。但是当我 运行 程序时 returns

Object reference not set to an instance of an object.

我制作了一个 RichTextBox 数组和 TabPage 数组,它们都可以容纳 20 个元素(这个词对吗?)但是出现了问题。 Control.Add() 的函数假设取一个控制值。

for 循环旨在遍历每个 TabPage 并向其添加正确的 RichTextBox。

我去 MSDN 看看他们有什么,但他们只有

tabPage1.Controls.Add(new Button());

而不是我的:

TabPages[x].Controls.Add(TextBoxes[x]);

但即使那样它也不起作用,我以前做过但没有数组,我最后一次做的是 6 个标签,我想做更多。 我尝试阅读互联网上的一些页面,但似乎没有任何效果,如果您能提供帮助,我将不胜感激。

你必须这样写

public partial class Form1 : Form
{
    public static TabPage[] TabPages = new TabPage[20];
    public static RichTextBox[] TextBoxes = new RichTextBox[20];
    public Form1()
    {
        InitializeComponent();

        tabControl1.TabPages.Clear();
        for (int x = 0; x < 19; x++)
        {
            TabPages[x] = new TabPage();

            TabPages[x].Controls.Add(TextBoxes[x]);    //ERROR HERE
            //Object reference not set to an instance of an object.
            tabControl1.TabPages.Add(TabPages[x]);
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

试试这个

 for (int a = 0; a < 20;a++ )
        {
            RichTextBox textBox = new RichTextBox();
            TextBoxes[a] = textBox;
            TabPage tabPage = new TabPage();
            TabPages[a] = tabPage;
        }
            for (int x = 0; x < 19; x++)
            {
                TabPages[x].Controls.Add(t);    
                TabControl.TabPages.Add(TabPages[x]);
            }