我有Windows窗体应用程序 2文本框1,2 2按钮1,2 我有上课的人{有get,set(string,int)} 我想宣布 人p; 在两个按钮1,2中看到它
我的问题是我宣布 人p;按钮结束时的内部按钮 p .~person();被称为 所以我不能保存价值
当我调用p.get时,我得到初始值
码
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{person p;
//string str;
stringstr(constchar*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(textBox1->Text).ToPointer();
p.set( str,int ::Parse(textBox2->Text));
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{person p;
string str;
int ag;
p.get(str,ag);
我将课程声明为
class person
{
public:
person();// create initial value
~person();//descon
void set(string z,int a);//set value
void get(string &z,int &a);//get value
private:
string name;
int age ;
};
------------------------------------------------------------
person cpp
#include "StdAfx.h"
#include "person.h"
#include "stdafx.h"
using namespace std;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
person::person()
{name="null";
age=-1;
}
person::~person()
{
}
void person::set(string z, int a)
{name=z;
age= a;
}
void person::get(string &z, int &a)
{z =name;
a=age;
}
我可以上传所有解决方案吗?
答案 0 :(得分:0)
你想要做的是使p成为表单对象本身的成员。这样,所有事件处理程序都可以访问它。
从您的事件处理程序中取出person p;
并将其放在表单中。在C#中你只需将它放在第一个事件处理程序之上 - 我不确定你在C ++ / CLI中做了什么,但它值得一试。
person p;
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
...
// Use p here
p.set( str,int ::Parse(textBox2->Text));
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
...
// It's still the same p here
p.get(str,ag);
}