我正在尝试学习如何使用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
任何人都可以请求帮助并发布正确的方法来向文本框显示功能吗?
答案 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;