Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在文本框中显示_C++_Visual Studio 2010 - Fatal编程技术网

C++ 在文本框中显示

C++ 在文本框中显示,c++,visual-studio-2010,C++,Visual Studio 2010,我正在尝试学习如何在VS中使用Windows窗体应用程序,我发现了一个问题。我习惯于基于控制台的应用程序。所以问题是: 我有一个表单,我想在文本框中显示属于另一个类的函数结果,我想在按下按钮时这样做。例如,这是一个示例类: #ifndef PRUEBA_H #define PRUEBA_H #include <string> #include <iostream> #include <iomanip> using namespace std; class

我正在尝试学习如何在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
编译器给了我这个错误

error C2665: 'System::Convert::ToString' : none of the 37 overloads could convert all the argument types    
任何人都可以提供帮助,并在文本框中显示函数的正确方式吗?

void show()
void show() 
{
   cout<<"Thanks"<<endl;
}
{
cout您需要返回字符串,而不仅仅是打印到标准输出--

也代替

System::Convert::ToString(x->show());
你可能只需要

x->show();

正如其他人所说,您需要一个返回类型,而不是打印到控制台中

string show() 
{
    return "Thanks";
}
但是,您还希望删除转换

textBox1->Text = (x->show());
如果仍然不起作用,那么我建议您尝试使用函数设置另一个字符串,例如:

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

看看编译器出了什么问题。

我终于找到了解决方案

#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;
#包括
#包括
字符串^s
s=封送(您要在文本框中输入的内容);
textBox->Text+=s+环境::换行符;

我去了string show(){string text=“Thank”;return text;}并让代码保持原来的格式,仍然不起作用。ThanksI完全按照您发布的string show(){return“Thank”;}还有同样的错误。这很奇怪,我需要在我拥有函数的类的名称旁边包含一些东西吗?谢谢你的时间。不,它抱怨错误C2664:'void System::Windows::Forms::Control::Text::set(System::String^)“不能将参数1从‘STD::String’转换成‘Stry::String’’VisualStudio,它对字符串的数量非常恼人:我通常解决Soal::Trime::to,但从不但从不打印从一个类中的函数到FrimOne中的TeXbox的问题。我不确定这是否仍然适用,但上次我写了C++。/如果要对对象进行垃圾收集,我必须使用
gcnew
而不仅仅是
new
。您必须执行
Prueba^x=gcnew Prueba()
。仍然没有。我尝试了gcnew而不是new,删除了convert并使用函数设置了另一个字符串,但在textBox1->Text=v中没有任何问题;如果在
textBox1->Text=v;
处设置断点并运行代码,那么
v
等于什么?它等于“谢谢”吗?另外,您是否得到了相同的错误?或者它只是没有显示?它没有得到任何地方,因为它中断了断点,并显示了我在类中的另一个函数中尝试的相同错误,该函数返回一个int,它显示得很好,我执行了Prueba*x=new Prueba();int v=System::Convert::ToInt32(x->add(秋季,夏季));textBox1->Text=Convert::ToString(v);是的,我知道它显示了一个错误,但是使用了断点,因此您可以分析代码中的值。当它中断时,如果您将鼠标移到它上面,
v
,它的值是多少?我将中断点放在我构建它的位置,它立即转到错误位置,但它没有到达断点我尝试将断点放在Prueba*x=new Prueba();它直接指向您有错误,并且不允许您查看调试器
string v = x->show();
textBox1->Text = v;
#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;