[C#]Textbox aus Form1 in Form2 auslesen...

10/23/2012 21:41 GodHacker#1
Hallo,
ich bin gerade dabei, ein Programm zu erstellen, welches 2 Forms besitzt.
Die zweite Form wird von einem neuen Thread erstellt (also mit System.Threading.Thread).

Wie kann ich den Wert, der in einer Textbox, von der Form1 ist, in der Form2 auslesen bzw. benutzen? Auf der Form2 habe ich keine Textbox (ich kann den Wert also nicht einfach in eine andere Textbox übernehmen). Es sollte in der Form2 in einer Variable gespeichert werden.

Ich bedanke mich schonmal, für jeden hilfreichen Post!


MfG
GodHacker
10/23/2012 22:39 bammes#2
Also spontan würde ich sagen du speicherst beim "OnTextChange" der Textbox in Form1 den Inhalt dieser TextBox in eine extra (statische) Variable in einer anderen Klasse.

Diese Variable liest du dann zu einer bestimmten Zeit (oder immer wieder) durch die Form2 aus und schreibst den Inhalt in die TextBox.

Ist nicht die eleganteste Methode, aber es geht.
10/24/2012 00:17 GodHacker#3
Leider sehe ich in der Form2 garnichts von der Form1...
Ich habe es schon mit "get" und "set" versucht, die Textboc habe ich zwischendurch auch mal auf "public" gestellt und mit:
Code:
Form form1 = new Form1();
string text = form1.textBox1.text;
(steht in der Form2 und soll normal klappen)

Leider findet die Form2 weder Variablen, noch Methoden, Schaltflächen oder Klassen...

PS: Vielleicht hilft es weiter... Ich starte in der Form1 einen neuen Thread, wenn ich auf einen Button klicke und dieser startet die Form2 (dadurch kann ich dann 2 Aufgaben gleichzeitig machen).
10/24/2012 00:35 Kraizy​#4
Form1 frm = new Form1();
String str = frm.textBox1.Text;

hast du modifiers auf public gestellt?
10/24/2012 11:53 GodHacker#5
Quote:
Originally Posted by Kraizy​ View Post
Form1 frm = new Form1();
String str = frm.textBox1.Text;

hast du modifiers auf public gestellt?
Ja, dass hatte ich alles schon gemacht, nur leider findet er nichts bei textBox1... Kann es vllt daran liegen, dass die zweite Form in einem neuen Thread gestartet wurde? Wenn ja, wie kann ich es dann trotzdem so machen?

Edit: Habe jetzt die Fehlermeldung:
Der Zugriff auf "xyz.Form1.textBox1" ist aufgrund der Sicherheitsebene nicht möglich.

Es liegt also wirlich daran, dass die Form2 in einem neuen Thread gestartet wird. Was nun?
10/24/2012 11:59 Cr4nkSt4r#6
*hust*
Quote:
1. Über die Controls eines Formulars darf niemand "von außerhalb" die Verfügungsgewalt bekommen.
2. Das Formular, das ein anderes erzeugt, darf auf dessen öffentliche Eigenschaften zugreifen, aber nicht umgekehrt:
3. Das untergeordnete Formular darf über seinen Erzeuger keine Einzelheiten kennen.
4. Der Erzeuger darf (durch eigene Aktivität) jederzeit öffentliche Eigenschaften abfragen und (soweit vorgesehen) festlegen.
5. Das erzeugte Formular darf seinem Erzeuger nur über einen Delegate etwas mitteilen (das betrifft die Situation, wo das untergeordnete Formular aktiv werden muss und das übergeordnete darauf reagieren soll).
*hust hust*

[Only registered and activated users can see links. Click Here To Register...]

*hust*


~ regards
10/24/2012 12:36 GodHacker#7
Quote:
Originally Posted by Cr4nkSt4r View Post
*hust*

*hust hust*

[Only registered and activated users can see links. Click Here To Register...]

*hust*


~ regards
Ok, jetzt habe ich in einem anderen Thread, der dort verlinkt war die Fehler behoben... leider schließt sich die Form2 immer sofort. Auf der Form2 ist eine pictureBox, welche den String benutzt, um den Pfad und den Dateinamen zu erhalten. Nun soll sich das Bild in der pictureBox öffnen... leider "blinkt" sie nur kurz auf und bevor man überhaupt etwas sieht, ist sie wieder weg.
Wie kann ich dafür sorgen, dass die Form2 offen bleibt? (hatte so ein Problem noch nie mit Forms)
10/24/2012 14:08 Cr4nkSt4r#8
Poste doch mal den interessanten Teil wo die Form definiert und aufgerufen wird.
Hoffe man wird Application.Run() dort wiederfinden ^^


~ regards
10/24/2012 22:13 GodHacker#9
Quote:
Originally Posted by Cr4nkSt4r View Post
Poste doch mal den interessanten Teil wo die Form definiert und aufgerufen wird.
Hoffe man wird Application.Run() dort wiederfinden ^^


~ regards
Hier die Codeausschnitte:
Form1:
Code:
private void button1_Click(object sender, EventArgs e)
{
  Thread tBild = new Thread(new ThreadStart(bildVorschau));
  tBild.Start();
}

private void bildVorschau()
{
  Form form2 = new Form2(textBox1.Text);
  form2.Show();
}
Form2:
Code:
static public string text;

public Form2(string textBoxWert)
{
  InitializeComponent();
  text = textBoxWert;
}

private void Form2_Load(object sender, EventArgs e)
{
  pictureBox1.Load(text);
}
PS: Sry, dass ich in meinem Quellcode kein Application.Run() habe. ^^
10/24/2012 23:17 nkkk#10
die grund weshelb die form sich wieder schliesst ist, das das der thread in der die from läuft am ende von bildVorschau beendet ist.

die lösung ist einfach: es einfach nicht in einem neuen thread machen.

wenn man es unbedingt in einem neuen thread machen will, muss man Appliaction.Run verwenden.
10/25/2012 14:34 GodHacker#11
Habe nun die Hauptform geändert, damit alles darauf abläuft. Nun besteht nur das Problem darin, dass ich die Seiten des Bildes um einen bestimmten px oder % wert abschneiden will und dies dann speichern möchte. wie kann ich also das bild damit bearbeiten und wie kann ich das bild aus der pictureBox speichern (am besten über einen Speicherdialog, nur ich weiß nicht wie ich den mit der pictureBox anwende). Die änderungen an dem Bild sollten sofort in der pictureBox sichtbar sein.

(Wenn dieses Problem auch gelöst ist, sollte mein Programm keine Schwierigkeiten mehr machen)

Ich bedanke mich schonmal für jede Hilfe!

PS: Wenn ihr Codebeispiele posten würded währe es sehr toll (wenn ihr es macht kommentiert bitte auch ein wenig, damit ich es leichter verstehen kann).


MfG
GodHacker
10/25/2012 18:51 MoepMeep#12
Quote:
Originally Posted by Kraizy​ View Post
Form1 frm = new Form1();
String str = frm.textBox1.Text;

hast du modifiers auf public gestellt?
Du meinst das nicht ernst, oder? :|


@GoldHacker Selten so einen scheiß Code gesehen. Obwohl, doch. Hier liefern ja alle so einen Schwachsinn ab. Wer hat bitte angefangen diesen Müll zu verbreiten?
Nimm dir ein vernünftiges Buch, lern die Sprache oder lass es komplett.
10/25/2012 19:17 Kraizy​#13
Quote:
Originally Posted by MoepMeep View Post
Du meinst das nicht ernst, oder? :|
Tut mir leid.
10/25/2012 19:21 GodHacker#14
Quote:
Originally Posted by MoepMeep View Post
Du meinst das nicht ernst, oder? :|


@GoldHacker Selten so einen scheiß Code gesehen. Obwohl, doch. Hier liefern ja alle so einen Schwachsinn ab. Wer hat bitte angefangen diesen Müll zu verbreiten?
Nimm dir ein vernünftiges Buch, lern die Sprache oder lass es komplett.
1) Ich heiße GodHacker und nicht GoldHacker!
2) Wenn du hier nichts vernünftiges posten willst lass es!
3) Da du ja scheinbar nicht mehr weißt solltest du selbst mal lieber ein Buch nehmen und es lernen (sonst könntest du ja posten, wie es geht).
4) Seit wann hast du zu entscheiden, was ich mache und was nicht? Wenn ich C# lernen und benutzen will dann mache ich dies, egal ob ich ein "vernünftiges" Buch dafür lese oder mir alles aus dem Internet hole.
5) Lass deine Fäkalsprache hier weg! Dies ist ein Forum und kein Getto.
6) Bevor du sagst, dass hier ja alles so ein "Schwachsinn" ist, solltest du mal beweisen, dass du etwas gutes bringen kannst (kein Copy&Paste).

Mehr muss ich wohl nicht dazu sagen...

PS: Sry, dass es etwas "aggresiv" schreibe, aber wenn jemand sowas schreibt, macht es mich schon leicht sauer. Sollte ein Admin, Moderator oder ähnliches es trotzdem nicht akzeptieren, so kann er/sie mir eine PM senden, dann editiere ich meinen Post.


MfG
GodHacker
10/26/2012 14:24 MoepMeep#15
Quote:
Originally Posted by GodHacker View Post
1) Ich heiße GodHacker und nicht GoldHacker!
2) Wenn du hier nichts vernünftiges posten willst lass es!
3) Da du ja scheinbar nicht mehr weißt solltest du selbst mal lieber ein Buch nehmen und es lernen (sonst könntest du ja posten, wie es geht).
4) Seit wann hast du zu entscheiden, was ich mache und was nicht? Wenn ich C# lernen und benutzen will dann mache ich dies, egal ob ich ein "vernünftiges" Buch dafür lese oder mir alles aus dem Internet hole.
5) Lass deine Fäkalsprache hier weg! Dies ist ein Forum und kein Getto.
6) Bevor du sagst, dass hier ja alles so ein "Schwachsinn" ist, solltest du mal beweisen, dass du etwas gutes bringen kannst (kein Copy&Paste).

Mehr muss ich wohl nicht dazu sagen...

PS: Sry, dass es etwas "aggresiv" schreibe, aber wenn jemand sowas schreibt, macht es mich schon leicht sauer. Sollte ein Admin, Moderator oder ähnliches es trotzdem nicht akzeptieren, so kann er/sie mir eine PM senden, dann editiere ich meinen Post.


MfG
GodHacker
2. Nö :<
3. Könnte ich, aber wozu? Du versuchst hier etwas, was für deinen Wissensstand einfach viel zu viel ist.
4. Man sieht ja, was dabei rausgekommen ist.
6. Och komm, kidding me? :|