Ich habe eine DataGridView
, wo Benutzer durch Keyup und Keydown bewegen.Bewegen Sie sich durch DataGridView und laden Sie Bilder ohne einfrieren UI
Momentan verwende ich das keyup Event, um das Bild in der imageBox abhängig vom Wert aus einer Spalte zu aktualisieren. Es funktioniert gut, wenn der Benutzer nur eine Zeile nach unten oder oben bewegt. Das Problem ist, dass wenn ein Benutzer schnell einige Zeilen bewegt, indem er ein paar Mal nach oben oder unten tippt, die Benutzeroberfläche immer wieder für einige Zeit einfriert.
Wie kann ich das Einfrieren der Benutzeroberfläche verhindern und das Laden von Bildern "Hintergrundarbeit" machen?
Bisher mein Code:
private void LoadPicture(string path)
{
threadworker = new Thread(() => pictureBox1.Image = path);
threadworker.Start();
}
public void datenübergeben()
{
if (dataGridView1.CurrentRow.Cells["Bild1"].Value.ToString().Length != 0)
{
LoadPicture(dataGridView1.CurrentRow.Cells["Bild1"].Value.ToString());
}
}
nicht GUI-Steuerelemente in einem separaten Thread zuzugreifen. Verwenden Sie niemals einen leeren Try-Catch. – LarsTech
Okay jetzt ohne Versuch - irgendwelche Lösungen zu fangen? –
Wenn Sie eine asynchrone Aufgabe verwenden, wird die Benutzeroberfläche nicht blockiert, Bilder werden jedoch verzögert angezeigt. Informiere mich darüber, wie es läuft, oder ob du ein Code-Snippet benötigst, um dies zu tun. – sBanda