FormClosing没有看到DataGridView行和列

时间:2012-06-12 13:39:37

标签: c# winforms datagridview

请问,这有什么问题:
Form2_Closing:

Form1.DataGridView1.Rows[0].Cells[1].Value = "323";
  

错误:索引超出范围。必须是非负的且小于   集合的大小。参数名称:index

Form1上的DGV有10行和14列

2 个答案:

答案 0 :(得分:1)

从您的评论中看起来您正在尝试创建一个自定义对话框,该对话框将在调用表单上的DataGridView内操作特定值。我建议查看this创建自定义消息框的示例。

您将能够返回说明您想要更新DataGridViewCell的值,然后将其设置在Form1上。

答案 1 :(得分:1)

创建一个新的Winforms项目并添加一个按钮&它的click处理程序和TextBox [使其可访问,以便子进程可以设置值。我现在已经在设计师中公开了] 。然后在此表单上添加以下代码。此外,在项目中添加新表单(Form2)。

private void button1_Click(object sender, EventArgs e)
        {
            var child = new Form2();
            child.FormClosing += new FormClosingEventHandler(ChildFormClosing);
            this.Enabled = false;
            child.Show(this);
        }

        void ChildFormClosing(object sender, FormClosingEventArgs e)
        {
            var child = sender as Form2;
            if (child != null)
            {
                if (child.DialogResult == DialogResult.None)
                {
                    // do data grid view manipulation here 
                    // for ex:
                   (child.Owner as Form1).textBox1.Text = "Hi";
                }
            }
            Enabled = true;
        }