将数据从一个Form上的DataGridView显示到另一个Form上的TextBoxes

时间:2015-06-02 14:24:11

标签: c# winforms datagridview

我有两种形式。 ShoppingBasketForm.csEditBasketPopup.cs

ShoppingBasketForm.cs在名为DataGridView的{​​{1}}中显示一个购物篮,该购物篮与来自dataGridBasket课程的单独List<OrderItem>OrderItems绑定。这可以通过填写页面OrderItem Product NameQuantity上提供的文本框/ numericUpDowns,然后点击LatestPrice按钮Add来添加。它还可以通过点击btnAdd按钮Remove从所选行中删除数据。

我现在正在尝试实现btnRemove按钮Edit,一旦点击,它就会实例化btnEdit表单。在此表单上,再次显示三个文本框/数字向上EditBasketPopup ProductNameQuantity

如何从LatestPrice上的所选行中获取数据(用户无法选择单个单元格),并在用户激活dataGridBasket点击事件时使用该数据填充三个文本框?< / p>

我尝试在btnEdit中创建一个属性来保存第一个表单中的数据,但不确定如何从字符串形式的EditBasketPopup.cs中的所选行中提取数据,并且还遇到了需要来自行中每个单元格的单个数据的问题,因为它们被绑定到不同的属性。

我显然没有太多关于这个问题的示例代码,因为它是关于如何而不是为什么的理论,但是如果您需要什么,请告诉我。< / p>

1 个答案:

答案 0 :(得分:1)

@Harry Sweetman首先要获得datagridview的选定元素,你可以这样做:

'.blog-content'

此外,您需要在 //recover the view row DataGridViewRow drv = (DataGridViewRow)dataGridBasket.Current; //if the row is not empty => basket was selected in the dataGridView if (drv.Cells[0].Value != null) { //Here we get the first cell selected let say the name is like the id: string idBasketToEdit = drv.Cells[0].Value.ToString().Clone().ToString(); //Now we instantiate the form EditBasketPopoup, but sending the selected basket as a parameter frmEdit = new EditBasketPopoup(idBasketToEdit); frmEdicion.Name = "Edit basket"; frmEdicion.ShowDialog(); } 中使用带有Basket参数的表单构造函数:

EditBasketPopup.cs

最后让我们假设你有一个控制器(例如BasketController)你有一些逻辑。在这里,您认为您在要绑定数据网格视图(dataGridBasket)的集合中搜索要编辑的购物篮。

    public EditBasketPopup(string idBasket)
    {
        InitializeComponent();
        Basket b = control.GetBasket(idBasket);

        //You set the form boxes:
        txtProductName.Text = b.ProductName;
        txtLatestPrice.Text = b.LatestPrice;
        txtQuantity.Text = b.Quantity;
    }