Probleme beim Auswerten von Textboxen
-
Mahlzeit,
mal gleich vorab, ich bin neu hier und stecke z.Z. noch in der Ausbildung.
Ich soll z.Z. ein Programm schreiben, welches ein paar Rechenaufgaben für mich druchführt.
In Form einer Konsole war das auch gar kein Problem.
Nun wurde ich aber gebeten, das ganze mit einer Grafischen Oberfläche umzusetzten...
Ich habe also mit Visual Studio ein CLR Projekt erstellt und ein mit Windows Form mir eine Grafische Oberfläche zusammengebastellt.
Jetzt zu meinem Problem, ich möchte gerne die Werte ein Textfeld eingeben und diese dann in mein Array in der CPP schreiben, damit ich diese dort auswerten kann.
Folgendes habe ich breites zu stande gebracht:
ServerGUI.cpp
#include "ServerGUI.h"
#include <string>using namespace System;
std::string Test(String ^ s) {
std::string os;
using namespace Runtime::InteropServices;
const char* chars =
(const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
return os;
}und in meiner Header das folgende:
ServerGUI.h
#pragma once
namespace Wartungsvertragsrechner071 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Zusammenfassung für MyForm
/// </summary>public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Konstruktorcode hier hinzufügen.
//
}protected:
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
public: System::Windows::Forms::TextBox^ EingabeBox;
protected:
public: System::Windows::Forms::Button^ ButtonWrite;protected:
private:
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
System::ComponentModel::Container ^components;#pragma region Windows Form Designer generated code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
void InitializeComponent(void)
{
this->EingabeBox = (gcnew System::Windows::Forms::TextBox());
this->ButtonWrite = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
//
// EingabeBox
//
this->EingabeBox->Location = System::Drawing::Point(91, 57);
this->EingabeBox->Name = L"EingabeBox";
this->EingabeBox->Size = System::Drawing::Size(100, 20);
this->EingabeBox->TabIndex = 0;
//
// ButtonWrite
//
this->ButtonWrite->Location = System::Drawing::Point(114, 163);
this->ButtonWrite->Name = L"ButtonWrite";
this->ButtonWrite->Size = System::Drawing::Size(75, 23);
this->ButtonWrite->TabIndex = 1;
this->ButtonWrite->Text = L"Weiter";
this->ButtonWrite->UseVisualStyleBackColor = true;
this->ButtonWrite->Click += gcnew System::EventHandler(this, &MyForm::ButtonWrite_Click);
//
// MyForm
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(284, 262);
this->Controls->Add(this->ButtonWrite);
this->Controls->Add(this->EingabeBox);
this->Name = L"MyForm";
this->Text = L"MyForm";
this->ResumeLayout(false);
this->PerformLayout();}
#pragma endregion
private: System::Void ButtonWrite_Click(System::Object^ sender, System::EventArgs^ e) {std::string Test(EingabeBox->Text);
}};
}Ich hoffe der Schittstorm wird nicht zu groß und bin für jede Hilfe dankbar.
Danke im Voraus.
-
Doch, s. den mit "Wichtig" markierten Beitrag Windows Forms und Visual C++ MACHT KEINEN SINN!
-
Warum hantierst Du mit
std::string
undSystem::String
herum? Bleib bei den .NET Typen (=System::String
). Und es würde (Dir) helfen, wenn Du eine konkrete Frage hättest.Ansonsten hilft auch der Kommentar von Th69 weiter.
-
Danke erstmal für die schnelle Antwort.
Da ich das Programm bereits als std fertig habe und keine lust habe es neu zu schreiben, würde ich gerne nur eine Grafische Oberfläche schaffen in der ich meine Werte eintragen kann und diese in mein bestehendes Arry übergebe.Als beispiel ein Teil des alten Programms:
#include <iostream>
#include <iomanip>
#include <string>using namespace std;
//Strukturen
struct Kunde {
int iKundennr;
string sName;
string sNameAnsprechpartner1;
string sTelefonAnsprechpartner1;
string sEMailAnspreachpartner1;
string sNameAnsprechpartner2;
string sTelefonAnsprechpartner2;
string sEMailAnspreachpartner2;
};//Funktionen
int iFunktionKunde();//Arrays
struct Kunde aKunde[1];//Aufnahme Kundendaten
int iFunktionKunde() {
cout << "Bitte geben Sie die folgenden Kundeninformationen ein:" << endl;
cout << "======================================================" << endl;
cout << "Kundeninformationen:" << endl;
cout << "------------------------------------------------------" << endl;
cout << "1. Kundennr : ";
cin >> aKunde[0].iKundennr;
cout << "2. Firmenname: ";
cin >> aKunde[0].sName;
cout << endl;
cout << "3. Name erster Ansprechpartner: ";
cin >> aKunde[0].sNameAnsprechpartner1;
cout << "4. Telefonnummer erster Ansprechpartner: ";
cin >> aKunde[0].sTelefonAnsprechpartner1;
cout << "5. E-Mail erster Ansprechpartner: ";
cin >> aKunde[0].sEMailAnspreachpartner1;
cout << endl;
cout << "6. Name zweiter Ansprechpartner: ";
cin >> aKunde[0].sNameAnsprechpartner2;
cout << "7. Telefonnummer zweiter Ansprechpartner: ";
cin >> aKunde[0].sTelefonAnsprechpartner2;
cout << "8. E-Mail zweiter Ansprechpartner: ";
cin >> aKunde[0].sEMailAnspreachpartner2;
cout << endl;return 1;
};Wie kann ich hier aus dem vorangegangeng teil des Headers per Klick auf weiter
die eingegebenen Informationen aus der Textbox z.B. in aKunde[0].sKundenname schreiben.
-
Dazu muss das Array
aKunde
der Instanz vonMyForm
bekannt sein. Das kann man machen, indem man das Array beim Erzeugen (oder später) desMyForm
-Objektes übergibt. Alternative und vielleicht am einfachsten ist es, das ArrayaKunde
direkt als Member der KlasseMyForm
zu machen.
-
Danke für die Info theta.
Hast du dafür für mich vielleicht einmal ein Beispiel ?Danke im Voraus.