Laden...

Windows Forms TextBox aus extra Thread ändern

Erstellt von sitt vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.630 Views
Thema geschlossen
S
sitt Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
Windows Forms TextBox aus extra Thread ändern

Hallo.
Ich habe noch nicht viel Erfahrung in der Entwicklung von Oberflächen.

Also ich habe folgendes Problem: Ich habe mir eine TextBox auf die Oberfläche erstellt und einen default Anzeigetext definiert. Nun möchte ich den Text der Anzeige ändern indem ich die TextRefresh Methode, aus einem anderen Thread heraus aufrufe und dieser true oder false übergebe. Leider habe ich keine Textänderung an der Anzeige. Könnt ihr mir helfen??

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace Updater
{
	public partial class ConnectingServer : Form
	{
		public ConnectingServer()
		{
			InitializeComponent();
		}

		public void TextRefresh(bool status)
		{
			if (status == true)
			{
				ConStatus_TextChanged( null,null);
			}
			else
			{
				ConStatus_TextChanged( this, null);
			}
		}

		private void progressBar1_Click(object sender, EventArgs e)
		{
			progressBar1.Minimum = 0;
			progressBar1.Maximum = 100;
			progressBar1.Value = 100;
		}

		private void button1_Click(object sender, EventArgs e)
		{
			Application.Exit();
		}


		private void panel2_Paint(object sender, PaintEventArgs e)
		{

		}

		private void ConStatus_TextChanged(object sender, EventArgs e)
		{
			if (sender != null)
			{
				this.ConStatus.Text = "VERBUNDEN";
			}
			else
			{
				this.ConStatus.Text = "NICHT VERBUNDEN";
			}
		}
	}
}


3.430 Beiträge seit 2007
vor 12 Jahren

Hallo sitt,

also wenn du es aus einem anderen Thread heraus ändern willst dann musst du unbedingt das hier beachten: [FAQ] Warum blockiert mein GUI? und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Zudem wäre es einfacher wenn du einen isOnline boolean Wert verwendest. Dann kannst du dir diese ganzen Stringvergleiche ersparen.

Wenn du wissen willst wo der Fehler ist dann verwendest du am Besten den Debugger um mal Zeile für Zeile durch den Code zu gehen

Gruß
Michael

S
sitt Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren

So hatte den falschen Code geladen, der vorherige war zum testen sorry. Hier nun der originale mit dem Problem.
Danke für die Info. Das heißt also, ich kann nicht aus einem anderen Thread heraus über eine eingefügte methode direkt den Text der Anzeige ändern?

E
200 Beiträge seit 2006
vor 12 Jahren

Nein, weil das ein ungültiger Threadübergreifender Vorgang wäre. In den oben genannten Links findest du mehr Infos darüber.

Thema geschlossen