我有两个winforms,Form1& Form2,在form1上我有一个按钮,当点击时打开Form2作为对话框,我使用f2.ShowDialog()方法。现在,我希望当form2打开时,所有文本框控件都填充了一些指定的文本,这些文本是从sql表中提取的,或者是从form1上的datagridview中提取的。对于这个使用:
f2.Controls["StudentName"].Text= datagridview1.SelectedCells[0].Value.ToString();
f2.Controls["StudentClass"].Text= datagridview1.SelectedCells[1].Value.ToString();
f2.Controls["StudentSection"].Text= datagridview1.SelectedCells[2].Value.ToString();
f2.Controls["StudentMobile"].Text= datagridview1.SelectedCells[3].Value.ToString();
但是,这似乎不太好,因为我在form2上有10个文本框控件,所以这不是一种编程方式....请指导我一些有效的方法。
答案 0 :(得分:2)
您可以将相应的标记添加到gridview单元格,因此 datagridview1.SelectedCells [0] .Tag 应为“StudentName”。
然后你可以:
foreach(var cell in datagridview1.SelectedCells){
try
{
f2.Controls[(string)cell.Tag].Text= cell.Text;
}
catch
{
//Whatever you want
}
}
或者您可以将数据网格的列名与f2控件相关联。
这不是最美丽的方式,但它是即时的,它只是有效。
答案 1 :(得分:1)
这似乎是ViewModel绑定控件属性的一个很好的选择。然后,您可以更新模型以响应对话框或数据库查询中的操作,UI将更新。
答案 2 :(得分:0)
使用FindControl()
从datagridview获取所需的文本,您编写的代码如何有一些错误,如何一次从同一个控件分配所有selectedCells的文本?