【问题标题】:How can pass my row values from datagridView to another form?如何将我的行值从 datagridView 传递到另一个表单?
【发布时间】:2013-11-11 16:22:28
【问题描述】:

我有两个表单-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();
    }

这些方法是在主窗体中生成的。

【问题讨论】:

    标签: c# winforms datagridview buttonclick


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      //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();
          }
      }
      

      【讨论】:

        【解决方案3】:

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

        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();
        }
        

        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-05
          • 1970-01-01
          相关资源
          最近更新 更多