Hallo liebe Leute,
ich bin (leider) ziemlicher C#-Anfänger.
In einem Formular, welches durch einen User editiert wird (siehe Bild) ...möchte ich gerne eingegebene und ungespeicherte Werte abfangen, z.B. die "Kostenstelle".
Ich versuche es mit einem Button und einem winzigen Skript:
public async override void Button_Click()
{
string kostenstelle = this.StrValue("KOSTENSTELLE");
this.MessageBox("Wert ist: "+kostenstelle);
}
Das klappt zwar, wenn das Formular NICHT editiert wird, leider aber eben nicht im Editiermodus. Hat jemand eine Idee, wie ich das lösen kann?
Sieht aus als ob ein ehemaliger C++ Dev nun C# macht 😉
Mit dem Code Snippet ist nicht ersichtlich was Du machst, denn Standard Windows Forms sehen wir nicht. Das ist irgendein Custom Code, denn sowas wie StrValue gibts in .NET von Haus aus (und sieht eben nach Code aus, den man in C++ machen würde aber nicht in C#). Wir können nicht wissen, was da bei Dir im Code passiert - und ob der Code eigentlich genau so laufen muss, wie er bei Dir reagiert; oder nicht.
Ich denk mal, dass Du zwar "Formular" sagst aber eine Textbox meinst; und die kannst Du jederzeit über die Text-Eigenschaft abfragen (was wir hier im Code nicht sehen).
string currentValue = tbDescription.Text;
Was hast denn generell vor? Validieren?
Wenn ja siehe Overview of how to validate user input
Hallo Abt,
vielen vielen Dank für Deine Antwort.
Ja, ich selber kennen den Code für das Windows-Formular auch nicht. Es handelt sich um die vorgefertigte Geo-Software "MapEdit", die man durch C#-Code verändern kann. In der Tat geht es um Textboxen im Formular.
Was ich letztlich machen möchte: Ich möchte einen eingegebenen (aber noch nicht abgespeicherten) Wert aus einer Textbox auslesen (per Klick auf einen Button).
Anschließend wird im Hintergrund ein SQL-Statement abgesendet, welches weitere Parameter ermittelt und dann automatisch in andere Textboxen eingibt.
Grundsätzlich habe ich es (im Großen und Ganzen) hinbekommen, dass das Skript mit Formularen und Textboxen arbeitet, wenn Werte dort fest abgespeichert sind . Aber eben (bislang) noch nicht, wenn Werte dort neu eingegeben werden. Ich werde berichten, wenn ich eine Lösung gefunden habe.
MapEdit bietet eine eigene API: https://help.mapedit.de/api/DesktopApi/DialogPluginChangeValues (der Sinn hinter dem sofortigen Abfragen sich verändernder Werte sei aber dahingestellt) Der Code von #1 scheint aber noch mehr Mängel (z.B. async _ohne_ await, Spekulationen über die Inhalte von "Kostenstelle", keine Fehlerbehandlung,...) zu beinhalten.