2013-11-10 4 views
0

У меня есть две формы: Main и AddToCurrentInventory. В основной форме у меня есть datagridview и кнопка «Добавить в текущую инвентаризацию». Я хочу выбрать строку (одним щелчком) из datagridview и передать значения нескольких столбцов для контроля формы AddtoCurrentInventory, которая открывается, когда я нажимаю кнопку «Добавить в текущую инвентаризацию». Мне нужно одновременно запускать два события. Я пытался это сделать, но они не срабатывают. Когда я нажимаю кнопку , он открывает другую форму, но значения не проходят из выбранной строки. Где я ошибаюсь?Как передать значения строк из datagridView в другую форму?

Вот код для двух методов я

установленного размера
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(); 
    } 

Этого Methoda сделаны в основной форме.

ответ

0

Ваш код не будет работать, так как в ячейке щелкните мышью, что вы создаете экземпляр AddToCurrentInventory и устанавливаете значения полей, но внутри кнопки вы создаете еще один экземпляр AddToCurrentInventory для отображения формы. Используйте тот же экземпляр, где вы устанавливаете значение для отображения формы.

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

}