Just nu i M3-nätverket
Gå till innehåll

Uppdatera label från en annan klass än formuläret


ake_krakbar

Rekommendera Poster

Hej!

Hur går jag tillväga för att uppdatera en label i ett formulär från en annan klass än den klassen som formuläret utgör? Har försökt en massa olika tekniker:

-deklarerat labeln som static

-göra formuläret till en medlem av den andra klassen

-ska labeln dynamiskt i klass nr 2 för att försöka visa den i formuläret

 

Ingenting har dock funkat...

 

[inlägget ändrat 2005-02-01 16:57:41 av ake_krakbar]

Länk till kommentar
Dela på andra webbplatser

Du kan ju testa nått åt det här hållet

public class MyForm : System.Windows.Forms.Form
{
private label myLabel;

/* En massa annan kod */

public string LabelText
{
set
{
myLabel.Text = value;
myLabel.Refresh();
}
}
}

När du sen vill uppdatera labeln från en annan klass sätter du LabelText ungefär så här

MyForm mf = new MyForm();
mf.LabelText = "Den nya texten som ska visas.";

Raden myLabel.Refresh() gör att labeln uppdateras på en gång och inte väntar tills anropsfunktionen körts klart

 

Länk till kommentar
Dela på andra webbplatser

Tack för din hjälp. Tyvärr funkar det inte så bra.

 

När jag i formuläret instantierar klassen så blir det någon sorts rundgång, vilket leder till följande fel:

An unhandled exception of type 'System.StackOverflowException' occurred in system.windows.forms.dll

 

Så här ser instantieringen ut:

 

public Form1()
	{
		// Required for Windows Form Designer support
		InitializeComponent();

		TestClass t = new TestClass();
		t.MethodUpdatingTheLabel();
	}

 

Det är kanske bara att glömma den enkla utvägen som jag tyckte det skulle innebära att uppdatera ett formulär direkt från klassen och istället hämta fält från klassen för att sedan uppdatera kontrollerna med den datan direkt inifrån Form-klassen...

 

[inlägget ändrat 2005-02-08 09:36:17 av ake_krakbar]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...