none
Programmgesteuertes Auswählen von Text im TextBox-Steuerelement in Windows Forms funktioniert nicht. RRS feed

  • Frage

  • Ich habe wie bei MS beschrieben, Code aufgesetzt, der klaglos compiliert und ausgeführt wird, jedoch ohne sichtliches Ergebniss:

    private: System::Void radioButton1_CheckedChanged(System::Object^  sender, System::EventArgs^  e) {
    			bModus = true;
    			ToggleControls();
    			dezBox->Text = "Zahl eingeben!";
    			if (!System::String::IsNullOrEmpty(dezBox->Text)){
    				dezBox->SelectionStart = 0;
    				dezBox->SelectionLength = dezBox->Text->Length;
    			}
                dezRömToolStripMenuItem->Checked = true;
    			römDezToolStripMenuItem->Checked = false;
    		 }

    Warum wird der Text: "Zahl eingeben!" nicht markiert?

    Dienstag, 16. Dezember 2014 20:01

Antworten

Alle Antworten

  • Hallo.

    Erstmal ist die Verwendung von Umlauten (ö) in Quellcode sagen wir mal ungewöhnlich...

    Dann ist die Überprüfung von IsNullOrEmpty nach dem Verwenden einigermaßen überflüssig...

    Ich gehe mal davon aus, dass du die .NET Klasse TextBox verwendest (oder TextBlock usw.). Wenn dies der Fall ist, würde ich eher die Select(start, length)-Methode verwenden, um den Text zu wählen:

    Select(...) - MSDN

    Ich hoffe, dass ich helfen konnte. Schönen Abend noch.


    (C) 2014 Thomas Roskop

    Dienstag, 16. Dezember 2014 20:08
  • Hallo,
    du musst in deinem Code noch angeben, dass dezBox auch das aktive Control ist. Das geht über ActiveControl:

    this->ActiveControl = dezBox;

    Setze das einfach mit innerhalb der if-Abfrage.

    Die Auswahl hat auch vorher schon funktioniert, nur dass man die Auswahl nicht sah, weil der Fokus fehlte. Wenn sie trotzdem sichtbar sein soll, musst du die HideSelection-Eigenschaft von dezBox auf false stellen.


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Andreas Schumm Dienstag, 16. Dezember 2014 21:21
    Dienstag, 16. Dezember 2014 20:11
  • Danke für die schnelle Antwort. Das sind meine ersten Krabbelschritte in Visual Express und GUI-Programmierung überhaupt. Den Umlaut hat er wohl vom Text des Menüs zum Label geholt, muss man aber erst lernen auch alles. 

    Gruß,

    Andreas

    Dienstag, 16. Dezember 2014 20:13
  • Hallo nochmal,
    .NET selbst interessieren die meisten Umlaute nicht. Das hätte auch schon der Compiler angekreidet. Es ist besser sich die Umlaute abzugewöhnen, unter .NET sind sie jedoch harmlos.

    Wenn das noch deine Anfänge sind, bist du dir sicher das du C++/CLI lernen willst? C# hat unter .NET und später auch Apps deutliche Vorteile. In C++ solltest du von WinForms abstand nehmen. Siehe auch: C++/CLI und WinForms macht keinen Sinn
    Die fehlende Unterstützung seitens VS wird von Version zu Version schlimmer. Ich will nicht produktiv damit arbeiten müssen.


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 16. Dezember 2014 20:21
  • Danke Tom, das war die Lösung.

    Ich habe Grundkenntnisse von C und will C++ lernen weil ich perspektivisch für Amiga, Win und Linux entwickeln will. Java kommt da nicht in Frage, nachdem was ich gelesen habe sollte ich mich wohl besser nach einer anderen Plattform (Eclips? NetBeans?) umsehen? Was würdest Du sagen.

    Dienstag, 16. Dezember 2014 21:09
  • Mein Wissen zu C++ ist sehr begrenzt, sodass ich da kaum eine gute Aussage treffen kann. Allgemein würde ich dir jedoch empfehlen dir die Grundlagen ohne GUI beizubringen. Für C++ gibt es unter Windows keine von Windows ansatzweise unabhängig funktionierende Variante (die mir bekannt ist).
    Die Unterschiede zwischen C- und C++ kannst du auch in der Konsole kennen lernen.
    Die anderen Systeme haben dann jeweils ihre eigenen APIs um mehr als das Standard-C++ zu verwenden.

    C++/CLI mit WinForms benötigt zwingen .NET, was unter Linux bisher nur sehr eingeschränkt läuft. Die wenigste Arbeit hättest du wohl mit Java. Der Code sollte auf allen Systemen funktionieren.
    Ich persönlich mag Java nicht wirklich, allerdings macht es C++ für meinen Geschmack auch oftmals zu kompliziert. Ich bin halt etwas durch C# verwöhnt. Eine IDE empfehlen kann ich dir deshalb leider auch nicht.

    Wenn du kein Problem damit hast mehrere Programmiersprachen zu lernen, wäre C# vielleicht doch noch einen Blick wert. Die äußerliche Syntax ähnelt der von C++ und du kannst meistens schneller programmieren. Auf anderen Systemen allerdings wird es trotzdem schwierig mit .NET.
    Es gibt aber auch diverse Frameworks für C++, wie beispielsweise Qt, welches einiges auf verschiedenen Plattformen vereinheitlicht. Damit habe ich aber auch noch nicht gearbeitet.


    Tom Lambert - C# MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Dienstag, 16. Dezember 2014 21:31
  • Das arbeiten mit c# auf Linux-System ist eigentlich garnicht so schlimm.

    Mono und MonoDevelop sind nützliche (Open Source) Anwendungen, die dir dabei helfen.

    Sonst kann man aber halt c++ empfehlen, ist zwar manchmal etwas übertrieben kompliziert, aber es läuft auf allen Systemen, wenn du keine Aufwenigene Sachen wie GUI hast. Sonnst brauchst du ein Platofrmunabhängiges GUI-Framework wie QT.

    Übrigens, NetBeans ist sehr gut für die Entwicklung. Und NetBeans ist eine IDE, keine Platform.

    Platformen sind Windows, Apple Mac OS oder Linux (ist keine Schleichwerbung).


    (C) 2014 Thomas Roskop

    Dienstag, 16. Dezember 2014 21:39