我有关于将数据从表单传递到另一种形式的问题 这是我在学校的任务 在我的第一个表单中,我有一个按钮和3个文本框,标记为id,name和address。当我单击按钮时,将出现另一个表单,我也希望第一个表单不可访问。第二个表单显示了我已创建的数据库中的数据列表(ID,名称,地址)。选择所需数据后,会出现一个标有“select”的按钮,其代码如下:
private void metroButtonSelect_Click(object sender, EventArgs e)
{
string selectedwcNo = metroGrid1.SelectedRows[0].Cells[0].Value.ToString();
string selectedwcFullname = metroGrid1.SelectedRows[0].Cells[1].Value.ToString();
string selectedwcAddress = metroGrid1.SelectedRows[0].Cells[2].Value.ToString();
}
我不知道接下来该做什么。我想将这些数据传递给我的第一个表格
答案 0 :(得分:1)
为您的值创建一个类:
public class Person
{
public string No {get; set;}
public string Name {get; set;}
public string Address {get; set;}
}
在您的第二个表单中添加readonly
公共属性,从中获取所选数据。
public class SecondForm
{
private Person _SelectedPerson;
public Person SelectedPerson
{
get { return _SelectedPerson; }
}
//Set data to the SelectedPerson in your click eventhandler
private void metroButtonSelect_Click(object sender, EventArgs e)
{
_SelectedPerson = new Person();
_SelectedPerson.No = metroGrid1.SelectedRows[0].Cells[0].Value.ToString();
_SelectedPerson.Name = metroGrid1.SelectedRows[0].Cells[1].Value.ToString();
_SelectedPerson.Address = metroGrid1.SelectedRows[0].Cells[2].Value.ToString();
}
}
然后在第一个方法中创建方法,打开第二个表单并返回所选数据
public class FirstForm
{
private Person GetSelectedPerson();
{
Person selected = null;
using(var secondForm = new SecondForm())
{
secondForm.ShowDialog();
selected = secondForm.SelectedPerson;
}
return selected;
}
//And use above method in button click eventhandler
private void Button_Click(object sender, EventArgs e)
{
Person selected = this.GetSelectedPerson();
if(selected != null)
{
//Show selected data in the textboxes
this.TextBoxNo.Text = selected.No;
this.TextBoxName.Text = selected.Name;
this.TextBoxAddress.Text = selected.Address;
}
}
}
secondForm.ShowDialog()
方法会将表单显示为模式,这将使第一个表单无法访问。
答案 1 :(得分:0)
制作新表格:
Form2 frm2 = new Form2();
frm2.show();
隐藏表格:
this.Hide();
我真的不知道你想要做什么,但也许这会有所帮助 https://www.youtube.com/watch?v=PI3ad-TebP0
答案 2 :(得分:0)
当 DataGridView 用于显示/更改两个表单上的相同数据时,另一个功能可能更可取 - 数据绑定。如果数据将在第一个表格的第二个表格上更改,它将自动更新。
下面的示例演示了如何使用它。
<强> Persons.cs 强>
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
namespace FormsDataGridViewBinding
{
public partial class Form1 : Form
{
BindingList<Person> personList = new BindingList<Person>();
public Form1()
{
personList.Add(new Person("number1", "name1", "address1"));
personList.Add(new Person("number2", "name2", "address2"));
InitializeComponent();
dataGridView1.DataSource = personList;
}
private void button1_Click(object sender, System.EventArgs e)
{
using (var form2 = new Form2())
{
form2.Persons = personList;
form2.ShowDialog();
}
}
}
}
<强> Form1.cs的强>
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
namespace FormsDataGridViewBinding
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public BindingList<Person> Persons
{
get; set;
}
private void Form2_Load(object sender, System.EventArgs e)
{
dataGridView1.DataSource = Persons;
}
}
}
<强> Form2.cs 强>
{{1}}