C++ cli 多个表单相互覆盖变量

C++ cli 多个表单相互覆盖变量,c++-cli,multiple-forms,C++ Cli,Multiple Forms,我在C++/CLI中创建多个windows窗体以同时运行测试,我可以这样做,但我在类中定义了私有变量,但当第二个窗体写入其版本的变量时,它会覆盖该变量的所有其他窗体版本 array<String^>^args = Environment::GetCommandLineArgs(); int args1 = System::Convert::ToInt16(args[1]); int i; #pragma o

我在C++/CLI中创建多个windows窗体以同时运行测试,我可以这样做,但我在类中定义了私有变量,但当第二个窗体写入其版本的变量时,它会覆盖该变量的所有其他窗体版本

array<String^>^args = Environment::GetCommandLineArgs();
             int args1 = System::Convert::ToInt16(args[1]);
             int i;
             #pragma omp parallel for 
              for(i = 0; i < args1; i++)
              {
                Sleep(1000);
                Form1^ form1 = gcnew Form1(i);
                form1->Show();
              }



private ref class Form1 : public System::Windows::Forms::Form
{
private:
static int formnumber;
static SerialPort^ serialPort = gcnew SerialPort();
public:
    Form1(int formnum)
    {
        array<String^>^args = Environment::GetCommandLineArgs();
        formnumber = formnum;
        int a = 65;
        jigid = a + formnum;
        comnumber = formnumber + Convert::ToInt16(args[2]);
        InitializeComponent();
    }
}
array^args=Environment::GetCommandLineArgs();
int args1=System::Convert::ToInt16(args[1]);
int i;
#pragma-omp并行
对于(i=0;iShow();
}
私有ref类Form1:public System::Windows::Forms::Form
{
私人:
静态整数;
静态SerialPort ^SerialPort=gcnew SerialPort();
公众:
表格1(int formnum)
{
数组^args=Environment::GetCommandLineArgs();
formnumber=formnum;
INTA=65;
jigid=a+formnum;
comnumber=formnumber+Convert::ToInt16(参数[2]);
初始化组件();
}
}
当我创建2个表单时,formnum将始终为1,以便以后在表单中使用,因为创建第2个表单时会在第一个表单中重写formnum。
如何使表单不能覆盖其他变量?

不要将它们声明为静态的静态,在这种情况下,您一定有理由将它们声明为
static
,这个问题已经过时了。我最初是在类外声明变量的,有一个编译时错误,通过将变量声明为static解决了,所以当我将变量移动到类内时,我保留了静态变量,但没有想想看,汉克斯现在工作得很好。必须更改:静态SerialPort ^SerialPort=gcnew SerialPort();至:SerialPort^ SerialPort;并在表单内部:serialPort=gcnew serialPort();因为它抱怨初始化它。