【问题标题】:Load data to a datagrid using another form使用另一种形式将数据加载到数据网格
【发布时间】:2015-09-19 06:15:57
【问题描述】:

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

当用户输入一些信息并按下“添加”按钮时,我想将这些信息一一添加到数据网格中

为了实现第一个,我在 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 表单的添加按钮上调用它 -->

    private void btnAdd_Click(object sender, EventArgs e)
    {
       frmStudentDetailsForm frm = new frmStudentDetailsForm();
       frm.AddRecord(txtStudentID.Text, txtStName.Text);
       frm.ShowDialog();
    }

那么问题是,它会生成新表格来显示每条新记录。 但我想以一种形式添加所有记录。

请有人帮帮我

【问题讨论】:

  • 那是因为您实际上是在使用“new frmStudentDetailsForm()”创建一个新表单。调用时需要将 frmStudentDetails 的引用传递给 frmStudentRegistration。这可以帮助你stackoverflow.com/questions/7273862/…
  • 将 frm 声明为初始化为 null 的类的变量。在 btnAdd_Click 中,仅当为 null 时才创建 frm。
  • 我试过了。但我仍然有同样的问题:(

标签: c# datagridview datagrid


【解决方案1】:
  1. 在“frmStudentRegistration”类中,添加“public frmStudentDetailsForm StudentDetailsForm { get; set; };”类级别的属性声明。

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

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

例如

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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多