0
I have two forms: 'Sales' and 'productsDaVenda'
and a general variable that is in the code as Unique_home.Program.vendas.preco:
public static class vendas
{
public static string preco { set; get; }
}
in the sales form I have this function:
public void getValor()
{
TXTvalor.Text = Unique_Home.Program.vendas.preco; //TXTvalor do form 'vendas'
}
this function updates the text of the textbox to the value of the variable
In the form 'productosDaVenda' I want to call this function and I am using the following code:
private void BTNok_Click(object sender, EventArgs e)
{
Unique_Home.Program.vendas.preco = TXTvalor.Text; //TXTvalor do form 'produtosDaVenda'
foreach (Vendas oForm1 in Application.OpenForms.OfType<Vendas>())
{
oForm1.getValor();
}
this.Hide();
}
However, when I click on this button I am presented with this error:
System.Invalidoperationexception: 'Invalid thread operation: 'Txtvalor' control accessed from a thread that is not the one in which it was created.'
from what I understand, I cannot call the function another form. Is there any way I could allow this? Or some other way to update the value of the sales texbox via a button on the products'
NOTE: The 'sales' form is open at all times, while the 'productosDaVenda' form opens via a button in the 'sales' form. That’s the button code, just in case:
private void BTNproduto_Click(object sender, EventArgs e)
{
Unique_Home.Program.vendas.preco = TXTvalor.Text;
trocarform = new Thread(abrirform);
trocarform.SetApartmentState(ApartmentState.STA);
trocarform.Start();
}
Take a look at this answer and see if you can’t get a similar approach https://answall.com/questions/361898/c-windows-forms-chamando-um-form-neto-dentro-de-um-panel-form-av%C3%B4-a-partir-d/361929#361929
– Leandro Angelo