C# 使用表格1中的索引,并在表格2中使用
所以在表单1中,我有一个datagridview,当用户想要编辑任何客户机时,他选择一个并单击编辑按钮。。。并显示一个新窗口 在新窗口中,我希望文本框1是客户的名称,文本框2是地址 这是表格1的代码C# 使用表格1中的索引,并在表格2中使用,c#,winforms,C#,Winforms,所以在表单1中,我有一个datagridview,当用户想要编辑任何客户机时,他选择一个并单击编辑按钮。。。并显示一个新窗口 在新窗口中,我希望文本框1是客户的名称,文本框2是地址 这是表格1的代码 public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e) { int index = clientesgrid.SelectedRows[0].Index; }
public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
int index = clientesgrid.SelectedRows[0].Index;
}
表格1中有我遗漏的东西吗?如何将索引转换为另一种形式?救命啊 您必须以某种方式将其传递到第二个表单,例如
public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e)
{
form2.RowIndex = clientesgrid.SelectedRows[0].Index;
}
在Form2上创建一个
公共
或内部
属性/字段
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;
}
最直接的方法可能是将其包含在
Form2
的构造函数中。所以在Form2
中,您将有如下内容:
public Form2(int clientID)
{
// Do something with the clientID
// Most likely set it to a property on Form2, or a private member.
}
var index = clientesgrid.SelectedRows[0].Index;
var editForm = new Form2(index);
editForm.Show();
然后在Form1
中,当您创建Form2
的实例时,它可能看起来像这样:
public Form2(int clientID)
{
// Do something with the clientID
// Most likely set it to a property on Form2, or a private member.
}
var index = clientesgrid.SelectedRows[0].Index;
var editForm = new Form2(index);
editForm.Show();
理想情况下,您希望此参数成为客户端的标识符,而不仅仅是Form1
上DataGridView
中的行索引。这是因为如果它只是一个行索引,并且该行包含您需要的数据,那么Form2
没有它需要的数据,它仍然依赖Form1
来获取更多数据
尽可能减少依赖关系。任何Form2
的实例都应该在其构造函数中要求执行其工作所需的任何内容。然后,任何其他表单都可以创建Form2
的实例,只要它能够提供所需的内容
如果Form2
始终需要此标识符,则可以采取其他步骤使其无参数构造函数私有:
private Form2() { }
这将防止其他表单在不提供所需值的情况下创建
Form2
的实例。这是一种方法。或者,如果存在所有权链,则可以将索引设置为属性并引用((form1)Owner).index
。或者您可以将其作为构造函数参数newform2(索引)包含代码>。换句话说,除非您允许form2访问索引,否则form2将无法访问索引。