无法将属性或索引器“Form.MdiChildren”分配给 - 它是只读的

时间:2017-06-07 08:33:30

标签: c# winforms

我一直在标题中收到错误,我无法弄清楚表单设置为只读的位置或我如何禁用它。

private void studentToolStripMenuItem1_Click_1(object sender, EventArgs e)
        {
            addStudent newStudentForm = new addStudent(this);
            newStudentForm.MdiChildren = this;
            newStudentForm.Show();
        }

addStudent是一个表单,负责创建学生,并填写保留在主表单上的学生列表。所以我希望能够从Form2编辑Form1上的数据,这就是我使用Mdi

的原因

任何人都可以给我任何关于我应该在哪里寻找解决此错误的建议吗?

编辑:要清楚

Form1 = Parent

Form2 = Child

2 个答案:

答案 0 :(得分:1)

MdiChildren只是一个数组,代表当前的表单,它们是对话框的Mdi Childs。您需要将MDI子项加载到父项中。

这样的事情:

addStudent newStudentForm = new addStudent();
newStudentForm.MdiParent = this;
newStudentForm.Show();

答案 1 :(得分:0)

您不需要设置inputCode = codeReader.nextLine(); do{ if(items[i].checkCode(inputCode)){ if(items[i].checkPrice(inputPrice)){ System.out.println("You ordered " + items[i].getName() + " here it is"); break; } else { System.out.println("Sorry, the amount is not enough for this purchase. Please add more money and try again"); break; } } else { inputCode = codeReader.nextLine(); } } while(!items[i].checkCode(inputCode)); 。而且,即使它不是只读的,你也无法以这种方式设置它 - 它是一个表单集合,而不是表单。

从逻辑上讲,你试图告诉" newStudentForm当前表格是MDI孩子",并且不是真的,你真的需要" newStudentForm是这个&#34的新MDI孩子34。

您唯一需要做的就是在您的子表单中设置MdiChildren

MdiParent

P.S。请为您的课程使用正确的命名。它应该是private void studentToolStripMenuItem1_Click_1(object sender, EventArgs e) { AddStudent newStudentForm = new AddStudent(this); newStudentForm.MdiParent = this; newStudentForm.Show(); } ,而不是AddStudent。这一封信使代码完全不可读。