C# Form zum Einlesen von einem String

okris

Newbie
Registriert
Feb. 2013
Beiträge
2
Hallo Zusammen,

ich programmiere seit einer kurzen Zeit C#, ich möchte mithilfe con einer Art MessageBox einen String in mein Programm einlesen und damit dann weiter arbeiten.

Ich habe auch bereits eine Form dazu programmiert, allerdings bekomme ich das einlesen des Strings nicht so hin, dass meine Methode danach damit weiterarbeitet.

Der Quellcode für die Form:

public partial class EinleseBox : Form
{
public string TextBoxtText = "Text";
private string txt;

public EinleseBox()
{
InitializeComponent();
}

private void AbschickenBtn_Click(object sender, EventArgs e)
{
TextBoxtText = EingabeTxt.Text;
Close();
}

public string getTxt() { return txt; }
public void setTxt(string Text) { txt = Text; }
}

Ich habe versucht mithilfe von einer Beispielmethode versucht die Form zu benutzten:

private void button1_Click(object sender, EventArgs e)
{
EinleseBox MessageBoxLesen = new EinleseBox();
MessageBoxLesen.Show();
this.label1.Text = MessageBoxLesen.getTxt();

}

was mache ich falsch, bzw. wo ist mein Denkfehler?

Vielen dank für die Hilfe
 
Erstmal. Warum hast du zwei Strings?
Einer würde völlig genügen bzw. ich sehe den Sinn dahinter nicht.

Weiterhin wird der string txt nie gesetzt, da die Methode setTxt nie aufgerufen wird(was soll die überhaupt bewirken?)

Deine Get-Methode(getTxt()) gibt den Wert txt zurück, dieser sollte aber eigentlich entweder direkt der Wert aus der Textbox sein(EingabeTxt.Text), oder TextBoxtText)

Hier mal mein Code:

EinleseBox-Code:
Code:
    public partial class EinleseBox : Form
    {

        public string txtbxText { get; set; } //Property

        public EinleseBox()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtbxText = textBox1.Text;
            this.Close();
        }

        public string getText() //GetMethode
        {
            return textBox1.Text;
        }
    }
Im EinleseBox-Code habe ich zwei Möglichkeiten, zum einen mache ich es über eine get-Methode, welche mir direkt den Text aus der Textbox zurückgibt. Oder ich wähle s.g. Properties(in diesem Fall: public string txtbxText { get; set; }).

Main-Code:
Code:
        private void button1_Click(object sender, EventArgs e)
        {
            EinleseBox MessageBoxLesen = new EinleseBox();
            MessageBoxLesen.ShowDialog();
            this.label1.Text = MessageBoxLesen.txtbxText; //Property
            this.label1.Text = MessageBoxLesen.getText(); //GetMethode
        }
Im Main-Code bzw. in dieser Methode entscheide ich mich dann, welche Variante ich nehme. Ich habe jetzt mal beides einprogrammiert. Ersteres benutzt das Property, letzteres setzt den Labeltext via get-Methode.
Hier wurde weder Labels noch Textboxen umbenannt(d.h. sie heißen labelx, textbox). Das sollte man unter allen Umständen vermeiden, man verliert einfach die Übersicht über das Programm
 
Zuletzt bearbeitet:
MessageBoxLesen.Show()

Statt show - ShowDialog, damit das programm an der stelle wartet bis etwas eingegeben wurde...
 
ah, ja stimmt, jetzt klappt es, das ich zwei strings drin hatte war ein Fehler der sich durch rumprobieren eingeschlichen hatte.
Aber das größte Problem war glaube ich tatsächlich, dass er nicht "angehalten" hat.

Vielen Dank
 
Zurück
Oben