Conex
-
Gesamte Inhalte
16 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Conex
-
-
Nummernblock
in .NET
Hallo Leute,
ich habe einen Nummernblock (1-9) und zwei Textboxen. Jetzt möchte ich gern, dass wenn auf eine Zahl gedrückt wird, diese in die jeweilig aktive (Kursorposition) Textbox eingefügt wird.
Kann mir jemand weiterhelfen?
-
Ich verlange wahrscheinlich viel zu viel..... aber gibt es denn nicht eine einfache Möglichkeit eine Variable permanet zu speichern - "fest halten" - , dass sie ihren Wert nicht verlieren (nur bei Neubelegung), so dass sie überall verfügbar ist?
-
Main wird nicht benachrichtigt, wenn eine Berechnung durchgeführt wurde?
Genau... das Form Grundrechenarten macht alles unabhängig von Main! Alles wird dort berechnet und in einem String "ausgabe" zusammengefasst.
Gut, Properties.... bspw. so in die Klasse Grundrechenarten eintragen?
public string TextToShow { get { return this.ausgabe; } set { this.ausgabe = value; } }
Und dann in der Main:Grundrechenarten FormGrundrechenarten = new Grundrechenarten(); TextBox_Rechenverlauf.AppendText(FormGrundrechenarten.TextToShow + "\r\n");
Geht aber auch noch nicht
-
Ich bitte dich hiermit zum dritten Mal, zu zeigen, wo und wie du die Instanz der Klasse Grundrechenarten anlegst, und wo und wie du Aktion aufrufst.
Ich denke doch, dass es ersichtlich ist, wo und wie die Methode "Aktion" im Beitrag #21 aufgerufen wird.
Die Instanz zur Klasse Grundrechenarten wird in der Klasse Main (Form) angelegt:
Grundrechenarten FormGrundrechenarten = new Grundrechenarten(); string test = FormGrundrechenarten.Get_ausgabe(); TextBox_Rechenverlauf.AppendText(test + "\r\n");
-
Ich habe mehrere Forms und Klassen. So auch die Form Main & Grundrechenarten und die dazugehörigen Klassen. In der Form Grundrechenarten werden Berechnung durchgeführt und schließlich in den fertigen String "ausgabe" abgelegt. Nun soll dieser String in der richTextBox von Form Main angezeigt werden.
-
Ich kann mir das alls logisch vorstellen, nur scheitert es an der praktischen Umsetzung
Soben habe ich ein bisschen was über Instanzen gelesen und komme aber auch nicht so richig zurecht, wo ich was ändern muss. Kannst du mir nicht ein wenig vom Bauplanplan gben?
-
Main ist ne andere Klasse?
Genau... "Main" ist eine eigene Klasse (neues Form) wo eine richTextBox existiert die den Wert des Strings "ausgabe" annehmen soll.
-
Sooo... hier nun das komplexe Gebilde.
In meine Programm gibt es mehrere Klassen. Wir reden jetzt aber nur von der Klasse "Main" und der Klasse "Grundrechenarten".
Grundrechenarten.cs
public int aktion = 0; // Rechenart auswählen private void button_Auswahl_Click(object sender, EventArgs e) { if (treeView_Grundrechenarten.SelectedNode == treeView_Grundrechenarten.Nodes[0]) { aktion = 1; panel_Grundrechenarten.Visible = true; } } // Button "Berechnen" private void button_Berechnen_Click(object sender, EventArgs e) { switch (aktion) { case 1: Aktion(1); break; } } private string ausgabe; // Methode Aktion() private void Aktion(int aktion) { double x = Convert.ToDouble(textBox1.Text); double y = Convert.ToDouble(textBox2.Text); double erg; switch (aktion) { case 1: erg = x + y; ausgabe = Convert.ToString(x) + " + " + Convert.ToString(y) + " = " + Convert.ToString(erg); break; } } public string Get_ausgabe() { return ausgabe; }
Da nun die Methode "Aktion()" schon abgehandelt wurde weiß ich nun nicht weiter, wie ich den String "ausgabe" in die Klasse "Main" bekomme.
-
Woher kommt das Rechnen-Objekt, mit dem du das tust?
Ich denke mal, du meinst diese Zeile: Rechnen FormRechnen = new Rechnen();
Damit will ich eigentlich nur bezwecken, dass ich in der Klasse "Main" auf die Klasse "Rechnen" zugreifen kann.
Wie und wo ich genau die Methode Aktion() aufrufe gebe ich dir morgen durch!
-
Hm... in diesem einfachen Beispiel kein Problem.
Allerdings bringt es mir in meinem komplexen Programm nichts die Methode Aktion() in der Methode Get_ausgabe() aufzurufen. Die Methode Aktion() wird schon eher (also unabhängig) von der Methode Get_ausgabe() ausgeführt.
Wie gehe ich nun vor?
-
Ich denke, ich habe es nun doch von allein geschafft!
Main.cs
private void button1_Click(object sender, EventArgs e) { Rechnen FormRechnen = new Rechnen(); string test = FormRechnen.Get_ausgabe(); richTextBox1.AppendText(test); }
Rechnen.csprivate string ausgabe; private void Aktion() { //... erg = x + y; ausgabe = Convert.ToString(erg); } public string Get_ausgabe() { Aktion(); return ausgabe; }
-
Sehr schöne Erklärung... danke!!!
Nun habe ich noch ein wenig versucht, komme aber immer noch nicht auf einen grünen Zweig
Kannst mir mir einen Code-Ansatz geben, mit dem ich weiter arbeiten kann?
-
Ist dir der Unterschied zwischen Klasse und Instanz klar?
Na ja... eigentlich nicht
-
Die Methode "Aktion()" wird aufgerufen (nur im Code nicht sichtbar). Daher wäre es mir lieber, wenn ich aus der Klasse "Rechnen" von der Methode "Aktion" heraus die richTextBox in der Klasse "Main" füllen kann. Geht das nicht?
-
Hallo Leute,
habe genau das gleiche Problem, nur komme ich leider nicht ganz mit dem Lösungsansatz klar.
Ich habe zwei Klassen: Main, Rechnen
In der Klasse Main befindet sich eine richTextBox, die Ergebnisse von der Klasse Rechnen ausgeben soll.
Main.cs
Rechnen FormRechnen = new Rechnen(); TextBox_Rechenverlauf.AppendText(FormRechnen.ausgabe + "\r\n");
Rechnen.csprivate string ausgabe; private void Aktion() { //... erg = x + y; ausgabe = Convert.ToString(erg); }
Leider passiert hier überhaupt nichts. Ich habe schon zahlreiche Versuche unternommen und mitbekommen, dass der neue String "ausgabe" aus der Methode "Aktion()" nicht übernommen wird.
Vielen Danke im voraus!
Nummernblock
in .NET
Geschrieben
Ich weiß zwar, wie ich über einen Button einen Wert in ein bestimmtes Textfeld eintragen kann, aber nicht wie ich einen Wert in ein Textfeld, das gerade aktiv ist, einfüge.