mikrocontroller.net

Forum: PC-Programmierung Vc# textBox


Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in meiner Anwendung habe ich zwei TextBoxen und einen Button.

Gebe ich in die textBox1 x Zeichen ein, betätige dann den Button,
erscheint in der textBox2 der Text von textBox1.

Nun möchte ich aber dass das Zeichen welches ich in die textbox1
eingebe unmittelbar nach Tastendruck (Tastatur) in der textBox2
erscheint.

Wie kann ich also erkennen, ob in der textBox1 ein Zeichen eingegeben
wurde und dies dann unmittelbar in der textBox2 ausgeben.


Danke für Eure Hilfe
Dieter

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

indem du das entsprechende Event (TextChanged) abfängst und
entsprechend behandelst.

Matthias

Autor: Thomas L. (tom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du Microsofts Visual Studio verwendest, dann kannst du dort wo die
Properties (Eigenschaften) sind umschalten, sodass du Events auswählen
kannst. Dort findest du dann auch einen der sich TextChanged oder
ähnlich nennt - dort dann doppelklicken und du landest in einer fix
fertig vorgegebenen Funktionsdeklaration - da kommt dann dein Code rein
:)

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

hat soweit funktioniert.

Möchte an dieser Stelle noch fragen welche Bücher ihr über C# empfehlen
könnt.

Habe gute Kenntnisse in C, aber nur wenig in objektorientierter
Programmierung und garkeine mit VC#.

Danke und Gruß

Autor: Thomas L. (tom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich empfehle meist Go To C#
(http://www.amazon.de/exec/obidos/ASIN/3827319323/q...).

Am sinnvolsten ist jedoch dennoch: Probieren, probieren, probieren -
nur so lernt man es ...
Wenn man mal was konkretes braucht, kann man immer noch jederzeit im
Inet nachschlagen.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe nun noch eine Problem (Frage)


Kurze Einführung:

Mein PDA mit WM5.0 kommuniziert per Bluetooth mit meinem Laptop über
Terminalprogramme.

Zuerst konnte ich die Zeichen in einer textBox nur über das betätigen
eines Buttons "oCom.Write(textBox1.Text);" senden.
Durch den Event Handler klappt das Senden nun Zeichenweise und ohne
betätigen des "send" Buttons. Nochmal danke für die Hilfe.

Das Empfangen von Zeichen klappt zwar auch, muß aber immer den
"receive" Button betätigen um diese vermutlich aus dem Empfangsbuffer
in die textBox zu bekommen.

private void button4_Click(object sender, EventArgs e)//receiveButton
{
            textBox1.Text = oCom.ReadExisting();

}

Habe auch hier versucht mit dem Event Handler zu arbeiten.
--> kein Erfolg

Code aus Form1.Designer.cs

this.serialPort1.PortName = "COM12";     // benutzter Comport
this.serialPort1.DataReceived += new
          System.IO.Ports.SerialDataReceivedEventHandler(this.test);


Code aus Form1.cs

private void test(object sender, SerialDataReceivedEventArgs e)
{
            textBox1.Text = oCom.ReadExisting();
}

Wie gesagt, das klappt so nicht.

Ich frage mich nun ob ich die falsche Klassen Methode verwende ?


Von meinem Verständnis her, müsste doch wenn (ein) Zeichen (8Bit)
empfangen wurden, ein Flag gesetzt werden.
Gibt es sowas wie ein Event Handler für dieses Flag ?
Wenn ja, welches Flag muß ich abfragen ?

Vermutlich ist der Lösungsweg in C# anderst. Aber so würde ich auf
Mikrocontroller Basis vorgehen.

Ich brauche somit wieder etwas Unterstützung.

Danke und Gruß

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

auf den ersten Blick seh ich keinen Fehler. Wird deine Eventhandler
überhaupt aufgerufen?

Matthias

Autor: Thomas L. (tom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@dieter: wie Matthias schon gesagt hat, setze mal einen Breakpoint in
deinen EventHandler "textBox1.Text = oCom.ReadExisting();" und schau
ob er dort rein springt.
Darauf achten, dass in Visual Studio auf Debug gestellt ist (oben wo du
Debug/Release auswählen kannst).

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht auch nur oCom.Open() vergessen oder
oCom.ReceivedBytesThreshold != 1?

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein , er greift aus einem anderen Thread auf ein Object zu, dies klappt
unter Net2.0 nicht mehr.

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Klappt" schon, da Control.CheckForIllegalCrossThreadCalls nur vom
Debugger gesetzt wird und nicht wenn das Programm normal gestartet
wird.
Zum anderen wurde bislang keine InvalidOperationException erwähnt.
Falls das aber der Fall sein sollte, entweder die Daten im einem
thread-sicheren Objekt zwischenspeichern (einfacher string reicht),
oder eine Variante mit Invoke, BackgroundWorker etc. z.b.

delegate void AppendTextDelegate(string s);

textBox1.Invoke(new AppendTextDelegate(textBox1.AppendText),
oCom.ReadExisting());

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

und danke für die Schützenhilfe.

Habe das Ding mittlerweile -für mich zufriedenstellend- am Laufen.

Nun möchte ich eine Menüführung einbinden.
Also ich ziehe ein "MainMenu (heist so bei WM5.0)" aus der Toolbox in
die Form und kann dann einen Menue Baum realisieren.

Möcht, dass sich beim Anwählen eines bestimmten Menüpunktes ein neues
Fenster (Form) öffnet, welches wiederum mit Elementen aus der Toolbox
befüllt werden kann.

Das wird der nächste Punkt sein, den ich in Angriff nehme. Habe bereits
was versucht; war aber nicht erfolgreich.

Ein Buch habe ich mir auch bestellt "Charles Petzold Windows
programmieren mit C#". So heist das glaube ich. War teuer genug und
hoffe das taugt was. Wenn nicht läßt Ebay grüßen.

Sollte ich nicht weiterkommen und kurz vor'm Verzweifeln sein, werd
ich mich melden.

Gruß
Dieter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.