0

我有两个表单-Main 和 AddToCurrentInventory。在主表单中,我有一个 datagridview 和一个按钮“添加到当前库存”。我想从 datagridview 中选择一行(通过单击)并将几列的值传递给控件当我单击“添加到当前库存”按钮时打开的 AddtoCurrentInventory 表单。因此,我必须同时触发两个事件。我尝试这样做,但它们没有被触发。当我单击按钮时,它打开另一个表单,但值不是来自所选行的传递。我哪里出错了?

这是我定义的两种方法的代码-

private void dataGridInventoryItems_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        int rowIndex = e.RowIndex;
        DataGridViewRow row = dataGridViewInventoryItems.Rows[rowIndex];
        AddToCurrentInventory form=new AddToCurrentInventory();
        form.labelItemno.Text=row.Cells[1].Value.ToString();
        //label on the form AddtocurrentInventory
        form.textBox_itemname.Text = row.Cells[2].Value.ToString();
       //textbox on the form AddToCurrentInventory
        form.cmbUnit.Text= row.Cells[3].Value.ToString();
       //ComboBox on the form AddToCurrentInventory

    }

    private void button_addtocurrent_Click(object sender, EventArgs e)
    {
        AddToCurrentInventory formAddToCurrentInventory = new AddToCurrentInventory();

        formAddToCurrentInventory.Show();
    }

这些方法以 Main 形式制作。

4

3 回答 3

0

声明一个用于存储当前行索引的全局变量。说

Public int row =0;


 private void button_addtocurrent_Click(object sender, EventArgs e)
{                  
 row = new_tab_Object.CurrentCell.RowIndex; 

  if (row != -1)
    {
  AddToCurrentInventory form=new AddToCurrentInventory();

  form.labelItemno.Text=row.Cells[1].Value.ToString();

  //label on the form AddtocurrentInventory

  form.textBox_itemname.Text = row.Cells[2].Value.ToString();
  //textbox on the form AddToCurrentInventory
  form.cmbUnit.Text= row.Cells[3].Value.ToString();
  form.Show();
}

}

于 2013-11-11T08:22:28.810 回答
0

您必须使用一些变量来存储在 中提取的所有值CellClick,然后使用这些变量将信息传递给您的表单。但是,您应该声明一个保存新表单的变量。您的表单也应该只创建一次。这是应该如何完成的:

//You just need handle the button Click event    
private void button_addtocurrent_Click(object sender, EventArgs e)
{                  
    DataGridViewRow row = dataGridViewInventoryItems.CurrentRow;   
    if(!row.IsNewRow) {
      AddToCurrentInventory form=new AddToCurrentInventory();        
      form.labelItemno.Text=row.Cells[1].Value.ToString();
      //label on the form AddtocurrentInventory
      form.textBox_itemname.Text = row.Cells[2].Value.ToString();
      //textbox on the form AddToCurrentInventory
      form.cmbUnit.Text= row.Cells[3].Value.ToString();
      form.Show();
    }
}
于 2013-11-10T13:17:40.313 回答
0

您的代码将不起作用,因为在单元格单击中您正在创建一个实例AddToCurrentInventory并设置字段值,但在按钮单击中您正在创建 AddToCurrentInventory 的另一个实例以显示表单。使用相同的实例来设置值以显示表单。

于 2013-11-10T13:00:52.263 回答