Entwickler-Ecke

WinForms - Problem mit Ausgabe in Textbox


dubstep - So 08.08.10 21:32
Titel: Problem mit Ausgabe in Textbox
Folgendes Problem: Ich will einen Text in einer Textbox ausgeben lassen. Der User gibt individuelle Daten an - diese sollen in einen Standardtext eingesetzt und danach durch einen Klick auf einen Button ausgegeben werden. Das alles würde funktionieren, wären da nicht die individuellen Daten (in diesem Fall die "Startzeit") zu berücksichtigen. Hätte man diese nicht würde die Ausgabe super funktionieren - da diese aber berücksichtigt werden müssen brauche ich den Zusatz "string.Format". Diesen Zusatz akzeptiert mir aber weder eine textBox noch eine richTextBox - beide erwidern es bei Ausführung mit einer Fehlermeldung. Lasse ich das "string.Format" weg, kann ich keine individuellen Daten in den Text einfließen lassen ("..., textBoxStartzeit") wird rot unterwellt.


C#-Quelltext
1:
2:
3:
4:
5:
     private void button1_Click(object sender, EventArgs e)
{
string texttext = string.Format("if ((textBox1.Text ==" + '\u0022' + "{0}" + '\u0022' + ")\r\n{\r\npictureBox01.Visible = true; ... \r\n }\r\n }", textBoxStartzeit);
richTextBoxCode01.Text = texttext;
}


12profi - So 08.08.10 21:36

also wie wäre es mit


C#-Quelltext
1:
2:
3:
4:
5:
6:
if(textBox1.Text=="das was hier in soll was drin stehen soll)
{
richtextbox1.text="
Was hier in soll";
}
}
}


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Christian S. - So 08.08.10 21:43

@dubstep: Du willst ja auch nicht die ganze Textbox in den String packen, sondern nur die Text-Eigenschaft der Textbox :-)


dubstep - So 08.08.10 22:17

user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
@dubstep: Du willst ja auch nicht die ganze Textbox in den String packen, sondern nur die Text-Eigenschaft der Textbox :-)

Hmm, stimmt - und erst jetzt erkenne ich, dass mein Problem anspruchsvoller zu sein scheint, als angenommen. :?
Ich habe mich in meinem letzten Post etwas unglücklich ausgedrückt. Das Problem im Detail:

Es gibt einen fixen (konstant immer gleich bleibenden Text, welcher ausgegeben werden soll) - dieser Text stellt einen C#-Code dar und dieser C#-Code beinhaltet nun leider auch einmal - so verwirrend es auch sein mag - ebenfalls das Wort textBox. Dieses Wort "textBox" im immer gleichbleibenden Code soll eine Nummer erhalten, welche durch den User vergeben wird.

Diese Nummer wird vom User in eine textBox geschrieben.

Man hat also in der Form eine textBox (nennen wir sie textBoxNummerneingabe), in die der User eine Nummer eingibt.
Angenommen der User gibt die Nummer "3" ein, so heißt das Wort "textBox" im C#-Code: "textBox3".

Lässt man "textBox" wie von euch vorgeschlagen weg, dann besteht das Problem mit "Format.string" und der Fehlermeldung nicht, aber wie gesagt, das Problem ist, dass dieses Wort "textBox" nunmal mein Text ist, welcher ausgegeben werden soll.

Ich hoffe das war nun halbwegs anständig formuliert und nicht zu verwirrend. Falls doch, versuche ich es später nochmal besser zu formulieren.


Necaremus - Mo 09.08.10 09:46


C#-Quelltext
1:
2:
3:
4:
5:
6:
        private void MyButton_Click(object sender, EventArgs e)
        {
            string insert = insertBox.Text;
            string s = String.Format("textBox{0}: Stuff\r\nZeit: {1}", insert, DateTime.Now);
            sourceBox.Text = s;
        }

?

sollte ohne probleme funktionieren.

alternativ könntest du auch sowas in der Art machen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        private void MyButton_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("textBox");
            sb.Append(insertBox.Text);
            sb.Append(": Stuff\r\nZet: ");
            sb.Append(DateTime.Now);
            sourceBox.Text = sb.ToString();            
        }


dubstep - Mo 09.08.10 22:35

user profile iconNecaremus hat folgendes geschrieben Zum zitierten Posting springen:

alternativ könntest du auch sowas in der Art machen:

C#-Quelltext
1:
2:
3:
...  
StringBuilder sb = new StringBuilder(); 
...

Danke - das funktioniert einwandfrei!
Mit "AppendFormat" hat man sogar noch mehr/andere Möglichkeiten :lol:.

C#-Quelltext
1:
sb.AppendFormat("pictureBoxNummer{0}.Visible = true;", textBoxUsereingabe.Text);                    


Necaremus - Di 10.08.10 14:00

vlt noch als kleinen tipp, was mir zumindest sehr geholfen hat.
wenn du einen string bearbeitest solltest du nach möglichkeit immer auf den StringBuilder zurückgreifen, da er einfach wesentlich schneller ist.
also statt

C#-Quelltext
1:
2:
3:
4:
string s = "foo";
s += "bar";
s += "\r\n";
s *= "etc";
das selbe mit StringBuilder.Append(string)... vorallem wenn du mit ner foreach schleife oder so einen string bearbeitet^^

hat ein tool von mir, welches vorher 30 mins brauchte, auf <5min beschleunigt *g*, da ich den fehler am anfang au gemacht hatte.


dubstep - Fr 13.08.10 13:04

Ich bin mir nicht sicher, ob das hier noch zum Thema passt, aber bevor ich für diese kurze Frage extra einen neuen Thread eröffne ...
Die Textbox gibt nun zum Beispiel eine Funktion als Text aus "public void Beispiel() {xyz;}".
Ist es nun möglich, dass man den Inhalt des in der Textbox stehenden Textes nun automatisch in den C#-Code transferieren/übertragen lassen kann (ausgelöst zum Beispiel durch einen Klick auf einen Button)? Also die ganze in der Textbox als Text stehende Funktion soll dann zum Beispiel in einer bestimmten bereits vorhandenen Klasse im C#-Code stehen. Nach langer Recherche im Internet konnte ich leider nicht mal annähernd etwas dazu finden.
Kann es sein, dass dies ähnlich wie ein .txt-File (mit StreamReader) einzulesen ist?


Kha - Fr 13.08.10 17:42

Das passt nun wirklich überhaupt nicht ins Thema, bitte mache dafür also einen neuen Thread auf :) .
Zwei mögliche Suchbegriffe gebe ich dir aber noch auf den Weg: Suche bei Google C# INTERPRETER / Suche bei Google C# CODEDOM