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
void show() 
{
   cout<<"Thanks"<<endl;
}

此函数将一些文本打印到标准输出,但不返回任何内容。

你需要让它返回一个字符串。

于 2012-12-03T21:30:11.820 回答
0

就像其他人说的那样,您需要有一个返回类型而不是打印到控制台中。

string show() 
{
    return "Thanks";
}

但是,您还想删除转换。

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

如果这仍然不起作用,那么我建议您尝试使用该函数设置另一个字符串,例如:

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

看看编译器哪里出错了。

于 2012-12-03T21:59:22.593 回答
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";
}

也代替

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

你可能只需要

x->show();
于 2012-12-03T21:43:12.490 回答