I suggest: in the second Form with the DataGridView
define a Public Action (delegate) that returns a DataTable:
public Action<DataTable> SendDataTable;
In the Click EventHandler for the Button on the second Form, after the DataTable is constructed, then invoke the delegate (Action) with the DataTable as the parameter value:
private void btnTransmitDataTable_Click(object sender, EventArgs e)
{
if(SendDataTable != null) SendDataTable(perclothesdescriptionDT);
}
In the Main Form (that creates the Form with the DataGridView):
Form2 form2;
form2= new Form2();
form2.SendDataTable += HandleDztaTableResult;
private void HandleDataTableresult(DataTable dataTable)
{
}
There are many ways you could address this issue of form-to-form data transfer. You could, for example, create the instance of the DataTable and inject it into the instance of Form2; you could pass in the instance of the DataTable by reference as a parameter to a method in the secondary Form, etc.
OriginalGriff has an excellent series of three articles on different approaches to transferring information from form to form; I suggest you read them; here's a link to the first, which has links to the other two in the series: [
^].