Как перенести текст из From2 в ячейку dataGridView в Form1 в C#

У меня есть форма, которая содержит dataGridView с кнопками клеток. У меня также есть вторая форма, которая имеет текстовое поле. Как перенести текст из Form2 в dataGridView на Form1?

например:

Я нажимаю на ячейку кнопки dataGridView, чтобы запустить вторую форму, во второй форме я выбираю переключатель RadioButton, чтобы справиться с текстом, а затем нажимаю кнопку, чтобы перенести текст в ячейку, на которую щелкнули, в dataGridView в Form1.

Это код, который я до сих пор:

Form1 (Top_Shine_Form):

namespace Top_Shine
{
public partial class Top_Shine_Form : Form
{
    public Top_Shine_Form()
    {
        InitializeComponent();
    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex >= 2)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog();
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {

        if (radioButton1.Checked)
        {
            DataTable dgv1 = new DataTable();
            dgv1.Columns.Add("Time");
            dgv1.Columns.Add("CarColorNumber");
            dgv1.Columns.Add("Interior");
            dgv1.Columns.Add("Exterior");

            DataRow row = dgv1.NewRow();
            row["Time"] = Timetxt.Text;
            row["CarColorNumber"] = CNametxt.Text + " / " + CColortxt.Text + " / " + CNumbertxt.Text;

            row["Interior"] = "*";
            row["Exterior"] = "*";

            dgv1.Rows.Add(row);

            foreach (DataRow dr in dgv1.Rows)
            {
                int num = dataGridView1.Rows.Add();
                dataGridView1.Rows[num].Cells[0].Value = dr["Time"].ToString();
                dataGridView1.Rows[num].Cells[1].Value = dr["CarColorNumber"].ToString();

                if (interiorCB.Checked)
                {
                    dataGridView1.Rows[num].Cells[2].Value = dr["Interior"].ToString();
                }
                if (ExteriorCB.Checked)
                {
                    dataGridView1.Rows[num].Cells[3].Value = dr["Exterior"].ToString();
                }

            }
            radioButton1.Checked = false;
        }

        CNametxt.Clear();
        CColortxt.Clear();
        CNumbertxt.Clear();
        Timetxt.Clear();
        interiorCB.Checked = false;
        ExteriorCB.Checked = false;
    }
  }
}

Это мой код для формы 2:

namespace Top_Shine
{
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private Top_Shine_Form frm = new Top_Shine_Form();
    private void button1_Click(object sender, EventArgs e)
    {
        int num = frm.dataGridView1.Rows.Add();
        if (radioButton1.Checked)
        {
            frm.dataGridView1.CurrentCell.Value = radioButton1.Text;
        }
    }
  }
}

Теперь все работает нормально, пока я не нажму кнопку на Form2, чтобы перенести текст. и это показывает следующую ошибку:

An unhandled exception of type 'System.NullReferenceException' occurred in Top Shine.exe

Additional information: Object reference not set to an instance of an object.

Что именно я делаю не так?

Спасибо за помощь.

1 ответ

Решение

Решение на самом деле очень простое, вы меняете:

private Top_Shine_Form frm = new Top_Shine_Form();

Для того, чтобы:

public static string passingText;

Кнопка в Form2:

passingText = radioButton1.Text;

В Form1 для dataGridView1_CellContentClick:

dataGridView1.CurrentCell.Value = Form2.passingText;
Другие вопросы по тегам