Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# control auf anderen form ansprechen (https://www.delphipraxis.net/153955-control-auf-anderen-form-ansprechen.html)

youuu 22. Aug 2010 16:58

control auf anderen form ansprechen
 
Hi,

ich hoffe der Titel ist nicht zu argh nichts sagend.

Also ich habe einen Thread erstellt, der eine Methode besitzt und diese soll einen Text in eine ListBox hinzufügen.
Nur kann ich aus dem Thread gar nicht
Delphi-Quellcode:
ListBox1.items.add();
aufrufen, sondern nur in der Form in der dieses Control auch existiert.

Delphi-Quellcode:
Form1.ListBox1.items.add();
funktioniert leider nicht wie in Delphi :roll:

mkinzler 22. Aug 2010 17:01

AW: control auf anderen form ansprechen
 
Die VCL ist nicht multithreaded. Auf die Oberfläche sollte deshalb nur aus dem Hauptthread zugegriffen werden.

Btw: Warum weigerst du dich so vehement, Delphi-Tags zu setzen?

SirThornberry 22. Aug 2010 17:07

AW: control auf anderen form ansprechen
 
Wie bereits geschrieben wurde sollte man nicht von Threads aus auf die VCL-Elemente des Hauptthreads zugreifen. Das geht ganz schnell schief.
Aber zu deinem Problem: Die Listbox gehört nicht zum Thread also ist sie natürlich auch nicht im Thread so ansprechbar wie im Formular. Die Listbox gehört zum Formular. Wenn du also die Listbox von außerhalb ansprechen willst musst du vorher auch erwähnen auf welchem Formular sie liegt denn bei Verwendung von mehreren Forms könnte niemand wissen welche Listbox von welchem Formular du meinst. Daher:
Delphi-Quellcode:
DeinFormularWoDieListboxDraufLiegt.DeineListBox.Items.Add();

youuu 22. Aug 2010 17:13

AW: control auf anderen form ansprechen
 
Zitat:

Zitat von SirThornberry (Beitrag 1044156)
Delphi-Quellcode:
DeinFormularWoDieListboxDraufLiegt.DeineListBox.Items.Add();


Code:
Form1.ListBox1.items.add();
Das schrieb ich ja, funktionierte aber nicht.
Oder muss ich das noch in "using" einbinden?


Delphi Tags habe ich deswegen nicht benutzt, da es um c# geht und nicht Delphi

implementation 22. Aug 2010 17:21

AW: control auf anderen form ansprechen
 
Ja klar, das richtige Namespace musst du schon einbinden.
Und ganz wichtig: Auf Groß-Und-Kleinschreibung achten.
Wie wäre es denn mal, wenn du die Fehlermeldung hier reinschreiben würdest ;)
Zitat:

Zitat von SirThornberry (Beitrag 1044156)
Wie bereits geschrieben wurde sollte man nicht von Threads aus auf die VCL-Elemente des Hauptthreads zugreifen.

Zitat:

Zitat von mkinzler (Beitrag 1044153)
Die VCL ist nicht multithreaded. Auf die Oberfläche sollte deshalb nur aus dem Hauptthread zugegriffen werden.

Btw: Warum weigerst du dich so vehement, Delphi-Tags zu setzen?

Es handelt sich um C# ;)

mkinzler 22. Aug 2010 17:36

AW: control auf anderen form ansprechen
 
Das hat er vergesse zu erwähnen. Zudem sieht der Code sehr nach Delphi aus.

implementation 22. Aug 2010 17:39

AW: control auf anderen form ansprechen
 
Zitat:

Zitat von mkinzler (Beitrag 1044169)
Das hat er vergesse zu erwähnen.

Schau mal in die Titelleiste deines Browsers :wink:
Also bei mir steht da:
Zitat:

C# control auf anderen form ansprechen
:cyclops:

mkinzler 22. Aug 2010 17:40

AW: control auf anderen form ansprechen
 
Sorry bin halt ein blöder Depp :oops:

SirThornberry 22. Aug 2010 17:45

AW: control auf anderen form ansprechen
 
Hmm, ich hatte auch auf Grund des Quelltextes auf Delphi getippt (trotz der Angabe von C#) da ich von C++ etc. einen anderen Syntax kenne.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz