0

所以在表格1中我有一个datagridview,当用户想要编辑任何客户端时,他选择一个并单击编辑按钮......并出现一个新窗口

在新窗口中,我希望文本框 1 是客户的姓名,文本框 2 是地址。

这是form1的代码

    public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
    {
        int index = clientesgrid.SelectedRows[0].Index;
    }

我在form1中缺少什么吗?如何将索引转换为另一种形式?帮助。

4

3 回答 3

1

最直接的方法可能是将其包含在Form2. 所以Form2你会有这样的东西:

public Form2(int clientID)
{
    // Do something with the clientID
    // Most likely set it to a property on Form2, or a private member.
}

然后,Form1当您创建它的实例时,Form2它可能看起来像这样:

var index = clientesgrid.SelectedRows[0].Index;
var editForm = new Form2(index);
editForm.Show();

理想情况下,您希望此参数成为客户端的标识符,DataGridView不仅仅是从on 开始的行索引Form1。这样做的原因是因为如果它只是一个行索引并且该行包含您需要的数据然后Form2没有它需要的数据,它仍然依赖于Form1获取更多数据。

尽可能减少依赖。的任何实例都Form2应该在其构造函数中要求任何它需要的东西才能完成它的工作。然后任何其他形式都可以创建一个实例,Form2只要它可以提供它需要的东西。

如果Form2 总是需要这个标识符,那么您可能会采取额外的步骤将其无参数构造函数设为私有:

private Form2() { }

Form2这将防止其他表单在不提供所需值的情况下创建实例。

于 2013-02-11T18:54:33.357 回答
0

您必须以某种方式将其传递给第二种形式,例如这样

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
    form2.RowIndex = clientesgrid.SelectedRows[0].Index;
}
于 2013-02-11T18:51:43.257 回答
0

在 Form2 上创建一个public或属性/字段internal

class Form2
{
    internal int RowIndex; // or  internal int RowIndex {get; set;}
}

像这样称呼它

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
    form2.RowIndex = clientesgrid.SelectedRows[0].Index;
}
于 2013-02-11T18:54:23.040 回答