1

VS で Windows フォーム アプリケーションを操作する方法を学習しようとしていますが、問題が見つかりました。私はコンソールベースのアプリケーションに慣れています。問題は次のとおりです。

フォームがあり、別のクラスに属する関数の結果をテキスト ボックスに表示したいのですが、これはボタンを押すときに実行したいことです。たとえば、これはサンプル クラスです。

#ifndef PRUEBA_H
#define PRUEBA_H
#include <string>
#include <iostream>
#include <iomanip>

using namespace std;

class Prueba
{
public:
    void show() 
    {
       cout<<"Thanks"<<endl;
    }
};

#endif

これはボタンのコードです:

#include "prueba.h"
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

       Prueba *x = new Prueba();
       textBox1->Text= System::Convert::ToString(x->show());
 }

コンパイラは私にこのエラーを与えています

error C2665: 'System::Convert::ToString' : none of the 37 overloads could convert all the argument types    

関数をテキストボックスに表示する正しい方法を投稿してください。

4

4 に答える 4

0

私はついに解決策を得ました

#include <msclr\marshal.h>
#include <msclr\marshal_cppstd.h>

String^ s
s = marshal_as<String^>( what you want to put in the textbox );
textBox->Text += s + Environment::NewLine;
于 2012-12-04T06:16:39.403 に答える
0

他の人が言ったように、コンソールに印刷するのではなく、リターンタイプが必要です。

string show() 
{
    return "Thanks";
}

ただし、変換も削除する必要があります。

textBox1->Text = (x->show());

それでも機能しない場合は、次のような関数を使用して別の文字列を設定してみることをお勧めします。

string v = x->show();
textBox1->Text = v;

そして、コンパイラがどこでうまくいかないかを見てください。

于 2012-12-03T21:59:22.593 に答える
0

標準出力に出力するだけでなく、文字列を返す必要があります。何かのようなもの -

string show() 
{
   return "Thanks";
}

また、代わりに

System::Convert::ToString(x->show());

おそらく必要なのは

x->show();
于 2012-12-03T21:43:12.490 に答える
0
void show() 
{
   cout<<"Thanks"<<endl;
}

この関数は、テキストを標準出力に出力しますが、何も返しません。

文字列を返すようにする必要があります。

于 2012-12-03T21:30:11.820 に答える