我在form1中有一个datagridview,在另一个表单上有labelboxes。我想要做的是每当在form1中选择一行时,它的所有数据都将使用labelboxe显示在表单2上。这意味着,所选行的每一列都将分发到相应的标签框。
答案 0 :(得分:2)
有几种方法可以做这样的事情。以下是传递数据的两种方法:
在Form2中,您需要创建一个将采用两个对象的第二个构造函数:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public string yourName { get; set; }
public int Age { get; set; }
public Form2(string name, int age)
{
InitializeComponent();
yourName = name;
Age = age;
}
private void Form2_Load(object sender, EventArgs e)
{
label1.Text = yourName;
label2.Text = Age.ToString();
}
}
在Form1中,您创建一个Form2实例,并传递对象:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 F2 = new Form2("Jon Smith", 33);
this.Hide();
F2.ShowDialog();
}
}
或者你可以这样做:
在表单2上,您需要将标签修饰符属性设置为公共属性,因为默认情况下它们将设置为私有。您可以在设计模式的属性选项卡中执行此操作。
完成后,在form1中,您可以创建Form2的实例并将值传递给公共标签:
Form2 f2 = new Form2();
f2.label1.text = datagridview1.currentRow.cells[0].value.tostring();
f2.ShowDialog();
希望这有帮助。