C# 使用其他表单将数据加载到数据网格

C# 使用其他表单将数据加载到数据网格,c#,datagridview,datagrid,C#,Datagridview,Datagrid,我有两张表格。 第一个是frmStudentDetails。它有一个数据网格 第二个是frmStudentRegistration。它有一些文本框和添加按钮 当用户输入一些信息并按下“添加”按钮时,我想将这些信息逐个添加到datagrid中 为了完成第一步,我在frmStudentDetails中创建了以下方法 public void AddRecord(string StID, string Name) { DataGridViewRow row = (DataG

我有两张表格。 第一个是frmStudentDetails。它有一个数据网格 第二个是frmStudentRegistration。它有一些文本框和添加按钮

当用户输入一些信息并按下“添加”按钮时,我想将这些信息逐个添加到datagrid中

为了完成第一步,我在frmStudentDetails中创建了以下方法

    public void AddRecord(string StID, string Name)
    {
       DataGridViewRow row = (DataGridViewRow)dgvStDetails.Rows[0].Clone();
       row.Cells[0].Value = StID;
       row.Cells[1].Value = Name;

       dgvStDetails.Rows.Add(row);
    }
我在frmStudentRegistration表单的添加按钮上调用了它-->

然后问题是,itz生成新的表单来显示每个新记录。 但我想在一个表单中添加所有记录

请有人帮帮我

  • 在“frmStudentRegistration”类中,在类级别添加“public frmStudentDetailsForm StudentDetailsForm{get;set;};”属性声明

  • 将其设置为“frmStudentDetailsForm”类的实例。有几种方法可以做到这一点(即,在“frmStudentRegistration”类的自定义构造函数或其“Load”事件处理程序中),但对于新手,我建议在实例化“frmStudentRegistration”类之后和调用该实例变量的“Show”方法之前设置它。注意:如果调用“frmStudentRegistration”的“ShowDialog”方法,则对其他表单(即“frmStudentDetailsForm”)的任何更新都不会显示在屏幕上,直到您退出“ShowDialog”或明确调用其他表单的“show”或“ShowDialog”方法

  • 另一方面,我很好奇为什么要从“frmStudentRegistration”调用“frmStudentDetailsForm”的“ShowDialog”方法。根据我的经验,要么:a)网格的表单将使用“添加”选项(即,通过按钮、上下文菜单项、插入键和/或输入键(填写新模板行后))在添加项的表单上调用“ShowDialog”,要么b)两个表单将使用“添加”同时保持打开状态(通过无模式的“显示”方法调用)添加项窗体上的选项。顺便说一句,根据我的经验,您的“frmStudentRegistration”表单将被称为“frmStudentDetailsForm”,您的“frmStudentDetailsForm”将被称为“frmStudentsForm”、“frmStudentsListForm”或“frmStudentSummariesForm”等。此外,.NET命名约定将是“var studentDetailsForm=newstudentdetailsform()”(即后缀vs.前缀/两者都有,没有缩写)。实际上,如果由我决定,它将是“var StudentDetailsFrmObj=new StudentDetailsFrmCls()”

  • 在“frmStudentRegistration”类中,在类级别添加“public frmStudentDetailsForm StudentDetailsForm{get;set;};”属性声明

  • 将其设置为“frmStudentDetailsForm”类的实例。有几种方法可以做到这一点(即,在“frmStudentRegistration”类的自定义构造函数或其“Load”事件处理程序中),但对于新手,我建议在实例化“frmStudentRegistration”类之后和调用该实例变量的“Show”方法之前设置它。注意:如果调用“frmStudentRegistration”的“ShowDialog”方法,则对其他表单(即“frmStudentDetailsForm”)的任何更新都不会显示在屏幕上,直到您退出“ShowDialog”或明确调用其他表单的“show”或“ShowDialog”方法

  • 另一方面,我很好奇为什么要从“frmStudentRegistration”调用“frmStudentDetailsForm”的“ShowDialog”方法。根据我的经验,要么:a)网格的表单将使用“添加”选项(即,通过按钮、上下文菜单项、插入键和/或输入键(填写新模板行后))在添加项的表单上调用“ShowDialog”,要么b)两个表单将使用“添加”同时保持打开状态(通过无模式的“显示”方法调用)添加项窗体上的选项。顺便说一句,根据我的经验,您的“frmStudentRegistration”表单将被称为“frmStudentDetailsForm”,您的“frmStudentDetailsForm”将被称为“frmStudentsForm”、“frmStudentsListForm”或“frmStudentSummariesForm”等。此外,.NET命名约定将是“var studentDetailsForm=newstudentdetailsform()”(即后缀vs.前缀/两者都有,没有缩写)。实际上,如果由我决定,它将是“var StudentDetailsFrmObj=new StudentDetailsFrmCls()”


    这是因为您实际上正在使用“new frmStudentDetailsForm()”创建一个新表单。调用frmStudentDetails时,需要将其引用传递给frmStudentRegistration。这可以帮助您将frm声明为初始化为null的类的变量。在btnAdd_中单击,仅当为null时创建frm。我尝试了。但我仍然有同样的问题:(这是因为实际上您正在使用“new frmStudentDetailsForm()”创建一个新表单)。调用时,您需要将frmStudentDetails的引用传递给frmStudentRegistration。这可以帮助您将frm声明为初始化为null的类的变量。在btnAdd_中,单击仅在null时创建frm。我尝试了。但我仍然有相同的问题:(
        private void btnAdd_Click(object sender, EventArgs e)
        {
           frmStudentDetailsForm frm = new frmStudentDetailsForm();
           frm.AddRecord(txtStudentID.Text, txtStName.Text);
           frm.ShowDialog();
        }
    
    In "frmStudentRegistration":
    
    public frmStudentDetailsForm StudentDetailsForm { get; set; }
    
    public void main ()
    {
        var studentRegistration = new frmStudentRegistration();
        var studentDetailsForm = new frmStudentDetailsForm();
        studentRegistration.StudentDetailsForm = studentDetailsForm;
        studentRegistration.Show();
    }
    
    In "frmStudentRegistration":
    
    private void btnAdd_Click(object sender, EventArgs e)
    {
       StudentDetailsForm.AddRecord(txtStudentID.Text, txtStName.Text);
       StudentDetailsForm.ShowDialog();
    }