因此,在表单1中我有一个datagridview,当用户想要编辑任何客户端时,他选择一个并单击编辑按钮...并显示一个新窗口
在新窗口中,我希望在文本框中1是客户端的名称,而文本框2是地址。
以下是form1的代码
public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
int index = clientesgrid.SelectedRows[0].Index;
}
form1中是否有遗漏的东西?如何将索引转换为其他形式?救命。
答案 0 :(得分: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
Form1
的行索引。这样做的原因是,如果它只是一个行索引并且该行包含您需要的数据,那么Form2
没有它所需的数据,它仍然依赖于Form1
来获取更多数据。
尽可能减少依赖关系。 Form2
的任何实例都应该在其构造函数中为了完成其工作而需要它。然后,任何其他表单都可以创建Form2
的实例,只要它能够提供所需的内容。
如果Form2
总是需要此标识符,那么您可以采取额外步骤使其无参数构造函数成为私有:
private Form2() { }
这会阻止其他表单创建Form2
的实例而不提供所需的必要值。
答案 1 :(得分:0)
你必须以某种方式将它传递给第二种形式,例如
public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
form2.RowIndex = clientesgrid.SelectedRows[0].Index;
}
答案 2 :(得分: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;
}