Kan ikke bringe form til front fra subtråd
Jeg har unden held forsøgt at sætte min form ifront efter at en subtråd har leveret nye data til den.Jeg har lavet et lille testprojekt.
Under Form1_Load beder jeg en backgroundworker om
1) sætte formes venstre position. Det kan godt lade sig gøre.
2) kalde this.BringToFront. Det lykkes ikke.
Fejlmedelelse :
Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on.
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
delegate void FormLeftDelegate(int left);
delegate void FormFrontDelegate(bool inFront);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
FormChange(10);
FormChange(true);
}
void FormChange(int left)
{
if (this.InvokeRequired)
this.Invoke(new FormLeftDelegate(FormChange), left);
this.Left = left;
}
void FormChange(bool inFront)
{
if (this.InvokeRequired)
this.Invoke(new FormFrontDelegate(FormChange), inFront);
if (inFront)
this.BringToFront();
else
this.SendToBack();
}
}
}