1

好的,我对 WinForms 完全陌生,我正在尝试在另一个表单上找到 DataGridView1

frmPledgeCreation.Controls.Find("DataGridView1", True)

问题是,当我在第二个表单上检查 DataGridView1 的行数时……即使 frmPledgeCreation 上的 DataGridView1 中有很多行,我也总是得到 1。

正在frmPledgeCreation.Controls.Find("DataGridView1", True)创建一个新实例吗?我的目标是从这种其他形式设置此 DataGridView 的特定列的单元格的值,如下所示...

DGV.Rows(Convert.ToInt32(gDGVindex)).Cells("SecurityName").Value = GstrSearchResult.ToString()

wheregDGVindex是一个具有 rowindex 的全局变量 .. 但我总是得到超出范围的错误。

4

3 回答 3

1

If you are doing the same thing. I would expose a public function in your form. This function would take care of updating the grid.

frmPledgeCreation.UpdateSomeCell(GstrSearchResult.ToString())

You must already have a DataGridView1 property.

An other way would be to change the DataGridView1 from private/protected to public.

于 2013-10-31T14:02:10.313 回答
0

您可以在要访问 DataGridView1 的表单中引用 frmPledgeCreation

在 frmPledgeCreation

class frmPledgeCreation:Form
{
 public DataGridView dgv{get{return DataGridView1;}}
 Form1()
 {
  InitializeComponent();
 }
}

用于显示 Form2

Form2 f=new Form2(this);
f.show();

在 Form2 中

class Form2
{
 frmPledgeCreation reftof1;
 Form2(frmPledgeCreation f)
 {
  reftof1=f;
 }
}

现在您可以使用 refof1 参考访问 Form2 中的 DataGridView

reftof1.dgv.Rows[Convert.ToInt32(gDGVindex)].Cells["SecurityName"].Value=GstrSearchResult.ToString()
于 2013-10-31T07:15:46.097 回答
0

您可以创建将更新网格的公共函数,而不是您可以 在此处调用该函数是类似问题的答案

父窗体

   Form1 f = new Form1();
    f.Show(this);

子窗体

((Form1)Owner).DoSomething();
于 2019-01-03T13:37:16.240 回答