C# , ein grosses C mit kleine Zaun, darauf will ich jetzt vertraun


Duda

Erfahrenes Mitglied
Hallo Community,

nach einigem Hin und Her, habe ich mich für C# entschieden um ein Hobby-Programm-Projekt auf die Beine stellen, wie man so schön sagt. Als basis dient mir dabei Visual C# 2010, denn ich möchte schon den
hierin enthaltenen und mir auch schon teilweise bekannten Designer nutzen, welcher mir das Fenster Programmgerüst mit dem Namen Forms liefert, worin ich dann selbst "nur noch" die C#-Codezeilen einsetzen brauche. Wie Ihr seht, steht das "nur noch" in Anfühtungszeichen. Denn sowas glaube selbst ich nicht, obwohl ich von Haus aus gutgläubig bin. Also wie gesagt, es geht hauptsächlich nur noch um das "nur noch". Mein Programm war so gut wie fertig, wohl gemerkt auf dem Papier und in C++ und im PC unter Visual C++2010 Express wardas Forms mit tabpage1 bis 5 erstellt. Jede dieser Seite reich gefüllt mit Labels, TextBoxen, RadioButtons und CheckBoxen. Ja die letzte Seite war noch nicht so weit, den da sollte das Formular zum Ausdrucken der Ergebnisse noch gestalltet werden. Da mir einige Mitglieder, beim Umsetzen meiner Ideen, geholfen haben, waren keine besonderen Probleme mehr zu erwarten.
Dachte ich, aber dem war nicht so, denn ich konnte mit C++ in Visual C++ nichts anfangen, denn hier wird CLI erwartet. Ok dachte ich, dann mal ebend von C++ in CLI übersetz und ab geht die Post. Aber auch hier
mußte ich das Handtuch werfen, denn es sind schon zwei verschiedene Sprachen, welche Ähnliches machen, aber welche sich in den meisten Dingen nicht auf einen Nenner bringen lassen. Also ein Umsetzen 1 zu 1 war nicht möglich. Jedenfalls nicht von C++ zu CLI, wobei anderstrum sicher alle mehr als möglich gewesen wäre. Ich habe mich danach noch dies und das an Programmiersprachen angeschaut.
Und bin, weil ich das Visual-Express im Grunde beibehalten wollte, auf die C# version umgestiegen.
Ich fange nochmal ganz neu an. Aber auch hierzu habe nicht die passende Code gefunden um C++ 1 zu 1
übersetzen zu können, aber unter C# gibt es ausreichend ähnliche Code um so gut wie alles umsetzen zu können. Ich mache hier erstmal Schluß und komme mit den ersten Fragen im Laufer der kommenden Tage.

Viele Grüsse

Duda
 

Duda

Erfahrenes Mitglied
Hallo Community,

Nach vielem Lesen und Suchen im I-Net bin ich nun langsam soweit, daß ich sagen kann: " Vorm großem C mit dem kleinen Gartentor #, da stehe ich immernoch davor". Es liest sich gut und hört sich auch ganz gut an,
mal sehen was ich daraus machen kann.
Die Functionen fehlen, das ist schon mal klar, aber die Methoden funktionieren trotzdem wunderbar. Vector als Container vermisse ich,
stringstream gibt es nicht, es fehlen size und size_t,
das tut ja auch schon richtig weh.
Doch alles Andere, was ich für mein Programm so brauche, das konnte ich schon entdecken, doch ein paar kleine Fragen will ich nicht verstecken.
1.) Da ich bis jetzt noch keine Möglichkeit für das Zerlegen eines Strings
gefunden habe, ich meine ich brauche die einzelnen Positionen/Zeichen.
Deshalb denke ich daran mehrere kleine/kurze Strings zu definieren, welchen ich nur ein Zeichen zuweise. Mit diesen Mini-Strings lassen sich dann einige Dinge machen, welche ich für den Programmablauf brauche. Auch danach lassen sich diese Mini-Strings auch bei Bedarf zu einem großen String zusammen bauen. Da helfen StringBuilder und Append, also kein Problem. Nur lassen sich auch Strings mit nur einem Zeichen als Text verwirklichen?
2.) es sind 2 Fragen, aber ich erstelle ebend die Code-Zeilen.
C++:
// nur mal so, ganz ohne Konventionen
// Hier mal einer meiner Mini-Strings
 
string v1 = "F";
 
// nachfolgen zu meine 2 Fragen
// hex zu integer, ergibt 15
 
int dec = Convert.ToInt32("F", 16);
 
// dec zu hex. ergibt "F" 
 
string hex = Convert.ToString(15, 16);
Da ja ein String ja auch nur eine Variable darstellt, deshalb frage ich,
ob es möglich ist für das F zwischen den Anführungszeichen gleich die Bezeichnung eines Strings einzusetzen, welcher als Text/Wert das Zeichen F hat. Weiterhin würde ich in der zweiten Zeile, an Stelle der 15, den Namen einer Variable einsetzen, welche Ganzzahl 15 als Wert hat.
Allgemein kann man lesen, wenn eine Variable einen Wert hat und im Progammablauf präsent ist, dann kann mit dem Wert gearbeitet werden.
Habe ich das so richtig verstanden oder wäre es für meinen Beispiele anderst? So das wars fürs Erste. Aber weitere Fragen sind nicht ausgeschlossen. :)
Für Antworten bedanke ich mich im Voraus.

Viele Grüsse

Duda
 
Zuletzt bearbeitet:

Endurion

Erfahrenes Mitglied
Die Container sind etwas andere, teilweise gibt es keine direkte Entsprechung (std::set z.Bsp.). Der std::vector-Ersatz ist der List-Container. Bei den Containern immer die Generic-Variante vorziehen!
stringstream kannst du wunderbar durch den StringBuilder ersetzen.
size_t als Typ würde ich durch uint ersetzen. Die meisten Standard-Container benutzen aber int als Längentyp.

Das Zerlegen eines Strings geht ziemlich ähnlich dem std::string. Mit dem Index-Operator [] kanns du auf einzelne Zeichen zugreifen (nur lesend!), SubString ersetzt substr.

Sonst ist mir nicht ganz klar, weshalb du da Einzel-Zeichen-Strings benötigst.


Um einzelne Werte einem String zuzuweisen kannst du so vorgehen:

string gnu = "\x0f";
 

Duda

Erfahrenes Mitglied
Hallo Endurion,

danke für Dein Schreiben. Möchte so gut es geht dazu Stellung nehmen, fange von hinten an. Ich habe 16 einstellige Hex-Zeichen, welche sich ohne Probleme in einen String als Text eingeben lassen würden. Aber warum soll ich die einzelnen Zeichen in einen String zusammensetzen, wenn ich ihn anschliessend wieder zerlegen und convertiere, weil ich mit jeden Wert der einzelnen Zeichen rechnen muß.
Bei Zahlen 0 bis 9 ist es nicht so das Problem, aber bei den Buchstaben A bis F schon, den diese muß ich erst in einen Zahlenwert convertieren.
Ich verstehe wie Du es meinst mit "string gnu = "\x0f";
Aber ich habe nun mal die 0 bis 15 als einstellige Hexzeichen und das kann ich nicht ändern. Wobei ich diese im Ablauf des Programmes in beide Richtungen umwandeln muß, was ja mit Hilfe von Convert gut geht.
Nun weißt Du, warum ich die Einzelzeichen mit ihren Werten benötige.
Ja, das mit dem nur lesendem Zugriff ist mir bekannt. Wobei auch einzelne Positionen und somit auf ihre Zeichen möglich sind.
Hierzu habe ich gleich noch eine ähnliche Frage, wie in meinem vorangegangenem Schreiben. Könnte ich in den eckigen Klammern direkt eine Variable einsetzen, welche als Wert die entsprechnde Zahl hat.
C#:
string str = "Test";
Console.WriteLine(str[0].ToString();
// ergibt "T"
// oder
Console.WriteLine(str[2].ToString();
// ergibt "s"
// oder
for(int i = 0; i < str.Length; i++)
Console.Write(str[i].ToString());
// ergibt "Test"
Über SubString habe ich auch schon so Einiges lesen können. Nur über die
Möglichkeiten mit einem Ersatz für den Vector-Container noch so gut wie nichts. Wenn ich wüßte, wie ich die C++-Code-Zeilen, welche mir von den Mitgliedern Cromon und Comfreek zur Verfügung gestellt wurde, so umbauen kann, daß Vector gegen List ausgetauscht werden kann und size, auch size_t gegen uint, dann bliebe nur noch der Austausch von stringstream gegen StringBuilder über. Wobei nicht vergessen bleiben darf, daß in while noch ein hex-modifier eingebaut ist, worüber ich in C# auch noch nichts lesen konnte. Hierzu noch diese wichtige Zeile in C++.
C++:
while(stream >> std::hex >> curValue)
Aber ich warte noch auf ein Buch mit über 500 Kochrezepten für C#. Vielleicht findet sich da ja was Passendes.
Ja wenn das Wörtchen "wenn" nicht wär, dann wäre Alles halb so schwer.
So das ist es mal wieder für heute. Halt, da fällt mir noch was ein.
Ach ich laß es lieber sein und frage beim nächsten Mal mit.

Viele Grüsse

Duda
 
Zuletzt bearbeitet:

Duda

Erfahrenes Mitglied
Hallo Community,

ein Großstring mit 18 Zeichen,
dem sollen 18 kleine Strings entweichen.
Mit Substring ist sowas schnell bewegt,
die neuen Kleinstrings werden nicht zerlegt,
weil es ihnen mit Convert an den Kragen geht.
Hier werden sie in Ganzzahlen umgewandelt,
deswegen wird überhaupt nicht lang verhandelt,
Die Zahlen, die durch HexToDec dabei entstehn,
die wird man in vielen Berechnungen wieder sehen,
Die Variable "int Endsumme" wird ein Zahl ergeben,
welche auf die Position eines Tabellen-stringes zeigt.
Das Zeichen von dieser Position,
das ist nun schon der halbe Lohn.

Irgendwann gehts weiter, aber wahrscheinlich nicht in dieser Schreibweise.
Doch nun noch zu meinen aufgeschobenen Fragen in Bezug auf Substring.
C#:
string Großstr = "422748C08700843A";
 
// in kommender Zeile, geht das mit (0, 0) ?
// wie soll ich an das 1.Zeichen kommen?
// mathematisch über -1, ist keine Position
 string Klein1 = Großstr.Substring(0, 0);
 
// für weitere Zeichen ist alles klar
 
string Klein2 = Großstr.Substring(0, 1);
string Klein3 = Großstr.Substring(1, 1);
string Klein4 = Großstr.Substring(2, 1);
string Klein5 = Großstr.Substring(3, 1);
// und so weiter bis
string Klein17 = Großstr.Substring(16, 1);
string Klein18 = Großstr.Substring(17);
// ohne  2. Param. geht es durch bis Ende,
// ich meine bis zum letzten Zeichen.
Ich maches es auch nur ungern, daß ich den Großstring so zerlege, aber ich brauch die Ganzzahlen, wie oben beschreiben, wirklich oft im Programmablauf und es ist für mich machbar, weil ich nur die Variablen
händeln muß. Ich hoffe das es mit (0, 0) geht, sonst muß ich mir überlegen, ob ich noch ein weiteres unnützes Zeichen an 1. Stelle eingebe, welches die Position 0 einimmt, ich bin nämlich wirklich verunsichert, ob auf das Zeichen der Position 0 zugegriffen werden kann. Obwohl ich irgendwo gelesen habe, daß es hierfür in Form einer Abfrage auch eine Lösung machbar ist, aber es war wohl für C++ und
nachdem ich soviel gelesen habe, da weiss ich auch nicht ob ich was durcheinanderbringe.
Ich denke es war so: "ist es -1, dann wird 0 genommen", oder sowas in der Form. Naja ist erstmal auch egal, denn wenn es so geht, wie ich geschrieben habe, dann wird es eh nicht mehr benötigt.
So nun bin ich wieder ein Frage losgeworden. Für Antwort bedanke ich mich im Voraus.

Viele Grüsse

Duda
 
Zuletzt bearbeitet:

Endurion

Erfahrenes Mitglied
Die Parameter von Substring lauten StartIndex und Anzahl-Zeichen. Für das erste Zeichen musst du 0, 1 angeben (Index beginnt bei 0, und ab 0 ein Zeichen)

Ja, natürlich kannst du auch Variablen in die []-Klammern setzen

Du kannst das alles wunderbar in eine Schleife packen:

Code:
int   meineWerte = new int[Großstr.Length];

for ( int i = 0; i < Großstr.Length; ++i )
{
  meineWerte[i] = Convert.ToInt32( Großstr.substr( i, 1 ), 16 );
}
 

MCoder

Premium-User
Hallo,

die vector - Entsprechung in C# ist die Klasse "List", oder du nimmst ein normales Array, wenn die Liste nicht dynamisch sein muss. Wenn du mit den numerischen Werten arbeiten willst, macht es tatsächlich wenig Sinn alles in einen string zu packen.
Code:
List<byte> HexValues = new List<byte>() { 0x04,
  0x02,
  0x02,
  0x07,
  0x04,
  0x08,
  0x0C,
  0,
  0x08,
  0x07,
  0,
  0,
  0x08,
  0x04,
  0x03,
  0x0A };
Gruß
MCoder
 
Zuletzt bearbeitet:

Duda

Erfahrenes Mitglied
Hallo Endurion,

erstmal danke für Deine Hinweise. Was Du schreibst, erscheint mir einleuchtend. Es heißt eindeutig, ab dieser Position, in dem Fall 0, die Zahl nach dem Komma besagt, wieviel Stellen ab der 0, also nicht einschließlich der 0, somit komme ich nicht an das 1. Zeichen im String, welches ja Position 0 entspricht.
Meine Frage war/ist, wie kann ich das Zeichen der Position 0 erhalten? Denn so wie ich es sehe, erhalte ich mit (0, 1) das 2. Zeichen, mit (1, 1) das 3. Zeichen u.s.w.. Ich denke, daß ich auf diesem Weg nicht an das 1. Zeichen
herankomme. Deshalb war meine Idee, bei der Eingabe des Strings gleich ein Leerzeichen an erster Stelle eingeben, welches mich bei meinem Vorhaben nicht behindern würde und was man wenn nötig, auch schnell wieder mit TrimStart() entfernt werden könnte. Wobei mir dabei eventuell noch ein anderer Weg vorschwebt. Denn ich kann ja auch einen weiteren g string Großstr2 = " "; anlegen mit einem enthaltenem Leerzeichen und diesem Großstr2 dann den Großstr mit Concat anhängen, wobei ich dann Großstr2 zerlegen würde und ich brauchte dabei nicht auf Position 0 zuzugreifen.
Dies zu Deinen beiden ersten Zeilen, doch nun zu Deiner 3. Zeile.
Das gefällt mir, daß ich da die Variablen einsetzen kann.
Deine 4. Zeile betrifft die folgenden Code-Zeilen. Dem ist wohl nichts entgegen zu setzen, außer das Versehen Deinerseits, denn Du hast (.substr) geschrieben, was in C# ja Substring wäre. Ich bin natürlich den Code durchgegangen, denn ich wollte natürlich wissen, was letztendlich dann in "meineWerte" enthalten ist. Davon ausgehend, daß "Großstr" die Zeichenkette aus 1-stelligen Hex enthält, welche mit "new[Großstr.Length];"
dann "meineWerte" zugewiesen werden, wobei "for" so oft durchlaufen wird, wie die Länge von "Großstr" ist. Dabei erhöht sich dann "i" um jeweils einen Inkrement-Zähler (++i). So oft wird dann auch dem neuen String "meineWerte" durch "ConvertToInt32" ein Zeichen nach dem Anderem durch "Substring" zugewiesen, denn (i, 1) kann ich es entnehmen.
Es kann natürlich anderst sein, doch was Anderes fällt mir nicht ein.
Ich weiß, ich Texte dich zu, aber wie soll ich mit kurzen Worten was erklären, was mir gerade so einfällt.
Danke für Dein Lesen,
Und bis bald,

Duda
 

Duda

Erfahrenes Mitglied
Hallo MCoder,

danke für Dein Feedback. Ich freue mich darüber sehr, aber ich bin wirklich noch ein schwerfälliger Anfänger in Sachen Programmieren. Und im Moment bin ich nur auf den Umgang mit Strings und andere Variablen fixiert. Es ist so, daß ich als Anwender nur die einstelligen HexZeichen habe,
Es ist wäre für mich natürlich einfach direkt die Zahlenwert auch für A bis F mit einzugeben, aber dann bliebe es nicht mehr 1-stellig und außerdem sollen nach diverse Berechnungen ja wieder 1-stellige HexZeichen das Resultat sein. Also bleibe ich bei den Hexzeichen für Input und Output.
Innerhalb des Programmes wird nur mit Integer in den Grundrechenarten und mit Modulo gerechnet. Dies nur mal als groben Überblick. Also im Grunde bleibt mir da nicht viel, denn es muß nur alles folgerichtig und nach den Konventionen von Visual C# aufgesetzt werden. Da ich aber nicht alles was ich wissen möchte, in Büchern oder I-Net finden kann, deshalb habe ich immer irgendwelche Fragen, welche ich oft nich eindeutig formulieren kann. Dies nur mal so am Rande, warum ich sicher oft zu viel schreibe, ohne auf den Punkt zu kommen.
Also nochmals danke für Deinen Versuch mir List näher zu bringen, aber ich bleibe wohl doch lieber erstmal bei dem, wo ich schon einen kleinen Enblick habe. Also machs gut und bis bald mal wieder.

Viele Grüsse

Duda
 

MCoder

Premium-User
Erstmal danke für Deine Hinweise. Was Du schreibst, erscheint mir einleuchtend. Es heißt eindeutig, ab dieser Position, in dem Fall 0, die Zahl nach dem Komma besagt, wieviel Stellen ab der 0, also nicht einschließlich der 0, somit komme ich nicht an das 1. Zeichen im String, welches ja Position 0 entspricht.
Meine Frage war/ist, wie kann ich das Zeichen der Position 0 erhalten? Denn so wie ich es sehe, erhalte ich mit (0, 1) das 2. Zeichen, mit (1, 1) das 3. Zeichen u.s.w.. Ich denke, daß ich auf diesem Weg nicht an das 1. Zeichen
herankomme.
Mit (0,1) erhältst du schon das erste Zeichen. Der erste Parameter von Substring besagt, ab welcher Position im String begonnen wird (0 ist das erste Zeichen) und der zweite Parameter wieviele Zeichen verwendet werden.

Gruß
MCoder
 

Duda

Erfahrenes Mitglied
Hi MCoder,

danke für die Beantwortung einer Frage, welche mich bis jetzt irgendwie verunsichert hatte und weshalb ich mir schon Notlösungen erdacht habe.
Denn ich habe wirklich nur Beispiele gefunden, in denen in einem String auf Einzelzeichen oder Zeichengruppe zugegriffen wurde, aber nirgendwo war es mal das erste Zeichen, ich hoffe, nun wirst Du auch mein wiederholtes Nachfragen besser verstehen.
Noch eine Frage hierzu, hast Du es schonmal selbst praktiziert, weil Deine Antwort so sicher klingt.

Viele Grüsse

Duda
 

MCoder

Premium-User
Hallo,

ja, das habe ich schon selber angewendet.

Abgesehen davon kannst du solche einfachen Sachen auch selbst schnell ausprobieren. Einfach im Debugger einen Breakpoint setzen und schauen, welches Ergebnis eine bestimmte Operation liefert.

Gruß
MCoder
 

Duda

Erfahrenes Mitglied
Hallo Endurion,
ich komme noch mal auf Deine Code-Zeilen zurück und noch mal vielen Dank dafür.
Habe mich ja dazu schon geäußert. Mir ist da schon soweit klar geworden, daß "Großstr" nicht nur in "Int32" gewandelt wurde, sondern diese Werte als Zahlen dem Array "meineWerte[ i ]" zugewiesen wurde. Da "Großstr.Length" 16 Zeichen enthielt, somit könnte ich mit den Zahlen von 0 bis 15 auf die Werte zugreifen. Damit meine ich, wenn ich mit den Werten rechnen möchte, beispielsweise meineWerte[ 0 ] hat Wert 4 und meineWerte[ 2 ] hat den Wert 2, meineWerte[15] hat den Wert 10,
dann brauche ich nur wie folgt zu verfahren:

int Summe = meineWerte[ 1 ] + meineWerte[ 3 ];

Hierbei spielt es wohl keine Rolle, wenn es 8 oder 10 "meineWerte[ ]" sind, welche so addiert werden.
Naja, den Name etwas kürzen (mW[ ]), sonst werden die Zeile zu lang.
Ich hoffe, daß Du dem, was hier beschrieben habe, zustimmen kannst.
Doch schnell noch eine Frage zur Konvertierung des Array zum String, worin wieder die Hexzeichen sind.
Geht dies auch in nur drei Zeilen? Oder muß ich es für jeden "meineWert[ ]" einzeln tun?

@ Community, noch C# und etwas Gereimtes.

Ein Member hatte kritisiert,
weil es nicht leicht zum Thema führt, // leider wurde die I-Net-Verbindung unterbrochen
bissl schwer zum Lesen sei es auch, // hier gehts weiter
doch Reimen ist ein alter Brauch,
moderner führt es zum Sprechgesang,
doch Ihr Member seid nicht bang,
damit fang ich nicht auch noch an,
der Kritiker hat Fragen nicht entdeckt,
weil sie unauffällig im Text versteckt,
Fragen kommen erst zu letzt,
darüber war er ganz entsetzt,
deshalb sei allen hier Kund getan,
mit Fragen fangen weiter vorne an,
ich versuche sie auch farbig zu gestalten,
doch die Buchstaben bleiben noch die Alten.

@ Endurion, nachdem ich in das Eingabefeld mit Namen "textBox1" mit 16 Zeichen gefüllt habe
und nun mit "OK" ein Ereignis auslöse, wonach einige Code-Zeichen abgearbeitet werden sollen,
welche mir den Text aus der textBox1 in meinen "Großstr" bringen sollen. Wie gehe ich da vor?
Sollte ich da Großstr als Leerstring einrichten und mit Concat TextBox1 anhängen oder mit Append oder Insert arbeiten, was ja in dem Fall mit Hilfe von StrinBuilder möglich wäre.
Oder würde es auch wie in den Code-Zeilen gehen?
Wenn ich nun auf die Werte in"meineWerte[ i ]"zugreifen möchte, dann bräuchte ich doch nur die entsprechende Zahl (0 bis 15) in den Operator [ ] eingeben.
damit man sieht was ich meine, noch ein paar Code-Zeilen
C#:
// textBox1.Text, diesen Text in Gstr überführen 
string textBox1 = "422748C08700843A";
// nun wird OK geklickt
// nun haben wir folgende Zeile
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string Gstr = textBox1.Text;
int meineWerte = new[Gstr.Length];
for (int i = 0; i < Gstr.Length; ++i );
{
mW[ i ] = Convert.ToInt32(Gstr.Substring(i, 1), 16);
// hier nun der Zugriff auf die Werte von mW[ ]
// der berechnete Wert von Summe sollte 16 sein
int Summe = mW[0] + mW[2] + mW[15];
}
}
Was meinst Du hierzu?
Wenn es nicht so geht, dann mit StringBuilder/Append etc..

Für Antworten, schonmal danke im Voraus.

Viele Grüsse

Duda
 
Zuletzt bearbeitet:

Duda

Erfahrenes Mitglied
Hi MCoder,

danke für Dein Feedback. Ja natürlich werde ich, wenn ich mit der Theorie fertig bin auch auch mal dieses oder jenes, wo ich unsicher bin, in der Console eingeben und debuggen bzw, mal als Progrämmchen durchlaufen lassen. Doch damit beschäftige ich mich dann erst zu einem späterem Zeitpunkt. Aber trotzdem noch eine Frage hierzu.
Was passiert, wenn ich den vom Designer erstellten Programmcode nur
schrittweise erweitere und gelegentlich mal ausprobiere, ob das Programm bis zum momentan letzten Schritt durchläuft. Damit meine ich, könnte ich den zuerst erstellten Code mit dem neu hinzugefügtem Code
wann immer ich will durch den Debugger schicken und wenn fehlerfrei auch compilieren, auch wenn das Programm noch nicht komplett ist?

So das soll es erstmal wieder sein.

Duda
 

sheel

I love Asm
Hi

natürlich muss das Programm nicht komplett fertig ein, um die schon gemachten Teile auszuprobieren.
Was nur da sein muss sind alle (im Code schon verwendeten) Variablen etc.
 

MCoder

Premium-User
Hallo,

sofern dein Programmcode fehlerfrei kompiliert und ergo eine ausführbare EXE erstellt wird, kannst du es natürlich jederzeit laufen lassen. Es spielt keine Rolle, ob es schon komplett ist.

Zu deinem Post davor:
Ich nehme an, du willst die Eingabe nur verarbeiten, wenn alle Zeichen komplett eingegeben wurden? In dem Falle ist das KeyPress-Event eher ungeeignet, weil es bei jedem eingegeben Zeichen auslöst. Besser wäre z.B. das Validated-Event, das erst auslöst, wenn das Textfeld den Fokus verliert, also wenn etwa OK geklickt wird.

Gruß
MCoder
 

Duda

Erfahrenes Mitglied
Hi sheel,

ich sage nur mal schnell danke,
ich finde es wirklich nett von Dir,
daß Du zu einer Antwort auch immer auf etwas Wichtiges hinweist.
Ich werde also darauf achten, daß immer alle Variablen für den entsprechenden/schon fertigen Programmabschnitt vorhanden sind.

Viele Grüsse

Duda
 

Duda

Erfahrenes Mitglied
Hi MCoder,

auch bei Dir bedanke ich mich, für Deine Aufmerksamkeit, denn ich merke schon, daß Du auch wirklich Alles liest was ich schreiben. Das mit dem Ereignis ist nicht vorsätzlich mir gemacht, wie Du ja an mein OK erkennen kannst. Habe nur mal auf die Schnelle ein Ereignis abgeschrieben und nicht daran gedacht, daß es ja ein KeyPress_Click war. Ich freue mich über Deinenberechtigten Hinweis. Ich habe natürlich vor da zwei Dialog-Buttons wie CANCEL und OK einzusetzen. Das CANCEL in Verbindung mit Löschen und den Focus neu setzen, weil ich einen Schreibfehler entdeckt habe und das OK, wenn die Eingabe fehlerfrei ist.
So das auch nur mal kurz, bis bald.

Viele Grüsse

Duda
 

Duda

Erfahrenes Mitglied
Hallo Endurion,
habe mich einige Tage mit anderen Dingen beschäftig, damit meine ich, habe den PC und das Internet mal ruhen lassen. Doch nun möchte ich mich noch für Dein Feedback bedanken. Wenn Du schreibst:"ist wunderbar", dann nehme ich an, daß ich dank Deiner Hilfe (und der Hilfe anderer Mitglieder) auf dem richtigem Weg bin.
Habe mir das Buch "Visual C# 2005, Entwicklerbuch" zum Preis von 1,-- EUR zugelegt. Und bin davon begeistert, auch wenn es nicht das Aktuellste ist, so sind doch alle Grundlagen darin enthalten und ich habe was in der Hand, wo ich bei Bedarf drin rumblättern kann soviel ich will. Habe natürlich auch Ähnliches wie Deinen Beispiel-Code gefunden und noch vieles mehr, so daß ich eigentlich kaum noch Fragen stellen müßte, aber es sind doch hin und wieder so kleine Raffinessen, welche nur ein erfahrenes Mitglied drauf hat und was dann nicht in Büchern beschrieben ist.
Deshalb werde ich wohl nicht umhin kommen und doch noch dies oder das zu erfragen. Noch kurz zu dem Titel dieses Threads. Der Titel hätte auch heißen können: "Mit Visual C# 2010 da wird es sicher geht"!
Also bis bald mal wieder hier im Forum.

Viele Grüsse

Duda