嗯,这是我的问题。我已经有了Form1和datagridview,我想在Form2上使用bindingSource将所选对象的值从datagrid传递到Form2到textBoxName和textBoxQuantity。 这是照片(对不起,但由于限制10分钟,我无法直接放置它们) http://i58.tinypic.com/hwy6g0.jpg
http://i60.tinypic.com/20fdt14.jpg
到目前为止,我已经使用方法ReadAllProducts()
创建了类Product和自定义Collection ProductCollectionclass ProductsCollection : List<Products>
{
public ProductsCollection ReadAllProducts()
{
Products product = null;
ProductsCollection pCollection = new ProductsCollection();
MySqlConnection cnn = new MySqlConnection(Konekcija.cnndbpos);
MySqlCommand cmd = new MySqlCommand("SELECT *FROM products", cnn);
try
{
cnn.Open();
MySqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
product = new Products();
product.Id = Int32.Parse(dr[0].ToString());
product.Name = dr[1].ToString();
product.Quantity = Int32.Parse(dr[2].ToString());
pCollection.Add(product);
}
cnn.Close();
}
catch (Exception xcp)
{
MessageBox.Show(xcp.Message);
}
return pCollection;
}
我使用bindingSource将集合从设计器绑定到dataGridview。
private void Form1_Load(object sender, EventArgs e)
{
ProductsCollection pc = new ProductsCollection();
bindingSource1.DataSource = pc.ReadAllProducts();
}
我想使用bindingSource在form2上做一些确切的事情。 到目前为止,我已完成此操作,按钮编辑,form1。
Products p = new Products();
Products pCurrent = (Products)dataGridView1.CurrentRow.DataBoundItem;
if (dataGridView1.CurrentCell.RowIndex > -1)
{
p.Id = pCurrent.Id;
p.Name = pCurrent.Name;
p.Quantity = pCurrent.Quantity;
}
Form2 f2 = new Form2();
f2.Show();
答案 0 :(得分:1)
作为DanielVorph状态,您需要利用BindingSource对象的Current属性:
//This is from button edit in Form1
var prod = bindingSource1.Current as Products;
var frm2 = new Form2(prod);
frm2.Show();
下一步是在Form2中创建一个带有Products
类型参数的构造函数public class Form2: Form {
public Form2(Products product){
bindingSource2.DataSource = product;
}
}
在Form2中,您必须删除另一个BindingSource并在设计时将其DataSource属性设置为Products类型,然后为textBoxName和textBoxQuantity设置数据绑定,以将其Text属性指向您刚刚为Form2创建的绑定源。以下是一些图片,因为它更好地说明了。