2012-12-03 139 views
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  

任何人都可以请帮助并发布正确的方式来显示功能的文本框?

+0

我不知道这仍然是适用的,但我最后一次写了一个C++/CLI应用程序,我不得不使用'gcnew'而不仅仅是'new'如果我想垃圾收集对象。你将不得不做'Prueba^x = gcnew Prueba();'。 – dreamlax

回答

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

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

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

+1

我去了字符串show(){string text =“thanks”;返回文本;}并留下形式相同的代码,仍然无法正常工作。谢谢 – user1873836

0

您需要返回一个字符串,而不是仅打印到stdout。喜欢的东西 -

string show() 
{ 
    return "Thanks"; 
} 

代替

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

而且你可能只需要

x->show(); 
+1

我做了你正在发布的字符串show(){return“Thanks”;}仍然是同样的错误。这很奇怪,我需要包括什么吗?除了我有功能的课程名称?谢谢你的时间。 – user1873836

+0

编辑答案进行更多更改。这一个应该工作。 – jrl

+0

不要抱怨错误C2664:'void System :: Windows :: Forms :: Control :: Text :: set(System :: String ^)':不能将参数1从'std :: string'转换为'System ::字符串^' – user1873836

0

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

string show() 
{ 
    return "Thanks"; 
} 

但是,你也想删除转换。

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

如果仍然无法正常工作,那么我建议你尝试设置另一个字符串的使用功能,如:

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

,看看编译器是怎么了。

+0

仍然没有。我尝试了gcnew而不是new,除去了convert和设置另一个字符串的功能,没有任何东西,在textBox1-> Text = v中出错了。 – user1873836

+0

如果在'textBox1-> Text = v;'处设置断点并运行代码,那么'v'等于什么?它是否等于“谢谢”?另外,你是否得到相同的错误?或者它只是不显示? –

+0

它没有得到它断裂的断点,并显示相同的错误我试着用我的类中的另一个函数返回一个int,它显示得很好,我做了Prueba * x = new Prueba(); int v = System :: Convert :: ToInt32(x-> add(fall,summer)); \t textBox1-> Text = Convert :: ToString(v); – user1873836

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;