2

私は c# の初心者で、2 つのフォームmainFormsubForm. ハズとハズ。mainForm_DataGridView1subFormrichTextBox1

FormClosingEventDataGridView1から行と列を追加したいsubForm

DataGridView1モディファイヤをpublicにしました。インテリセンスで表示されsubFormていますが、何か間違っている可能性があります。

subForm FormClosingEventで以下のコードを試しましたが、DataGridView1.

   if (richTextBox1.Text != "")
        {
            mainForm newMainForm = new mainForm();
            newMainForm.dataGridView1.ColumnCount = 3;
            newMainForm.dataGridView1.Columns[0].Name = "Product ID";
            newMainForm.dataGridView1.Columns[1].Name = "Product Name";
            newMainForm.dataGridView1.Columns[2].Name = "Product Price";

            string[] row = new string[] { "1", "Product 1", "1000" };
            newMainForm.dataGridView1.Rows.Add(row);
            row = new string[] { "2", "Product 2", "2000" };
            newMainForm.dataGridView1.Rows.Add(row);
            row = new string[] { "3", "Product 3", "3000" };
            newMainForm.dataGridView1.Rows.Add(row);
            row = new string[] { "4", "Product 4", "4000" };
            newMainForm.dataGridView1.Rows.Add(row);               
        }

前もって感謝します

4

1 に答える 1

3

したがって、mainFormがsubFormを開くと仮定します。

subForm sub = new SubForm();
sub.Show(); // or however you have done it

この例では、メインフォームで何かを変更できるようにサブフォームが必要なので、次のように、サブフォームでPublic/Internalメソッドを作成します。

private mainForm _parent;

internal void RegisterParent(mainForm form)
{
    // error handling of course, make sure form is not null, or you don't already have a parent
    this._parent = form;
}

メインフォームの後subForm.Show()に、次のようなものを追加します。

sub.RegisterParent(this);

これで、サブフォームは正しいメインフォームインスタンスを操作できます。

if (richTextBox1.Text != "")
    {
        _parent.dataGridView1.ColumnCount = 3;
        _parent.dataGridView1.Columns[0].Name = "Product ID";
        _parent.dataGridView1.Columns[1].Name = "Product Name";
        _parent.dataGridView1.Columns[2].Name = "Product Price";

        string[] row = new string[] { "1", "Product 1", "1000" };
        _parent.dataGridView1.Rows.Add(row);
        row = new string[] { "2", "Product 2", "2000" };
        _parent.dataGridView1.Rows.Add(row);
        row = new string[] { "3", "Product 3", "3000" };
        _parent.dataGridView1.Rows.Add(row);
        row = new string[] { "4", "Product 4", "4000" };
        _parent.dataGridView1.Rows.Add(row);               
    }

お役に立てば幸いです。

于 2012-09-26T05:53:04.800 に答える