显示在文本框中

时间:2012-12-03 21:27:54

标签: c++ visual-studio-2010

我正在尝试学习如何使用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 个答案:

答案 0 :(得分:0)

void show() 
{
   cout<<"Thanks"<<endl;
}

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

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

答案 1 :(得分:0)

您需要返回一个字符串,而不仅仅是打印到stdout。像 -

这样的东西
string show() 
{
   return "Thanks";
}

也代替

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

你可能只需要

x->show();

答案 2 :(得分:0)

与其他人说的一样,你需要有一个返回类型而不是打印到控制台。

string show() 
{
    return "Thanks";
}

但是,您还想删除转换。

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

如果仍然无效,那么我建议您尝试使用该功能设置另一个字符串,例如:

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

看看编译器出错的地方。

答案 3 :(得分: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;