如何在windows窗体中为我的事件函数定义使用单独的.cpp文件? 我在Windows窗体中定义我的C++事件函数有困难。

如何在windows窗体中为我的事件函数定义使用单独的.cpp文件? 我在Windows窗体中定义我的C++事件函数有困难。,c++,winforms,function,visual-c++,c++-cli,C++,Winforms,Function,Visual C++,C++ Cli,我想在一个单独的.cpp文件中定义我的事件函数(例如:button click),而不是在windows forms.h文件中执行所有函数定义,该文件中已经包含了为windows forms GUI生成的代码 我试着这么做, Form1.h类中的声明: private: System::Void ganttBar1_Paint (System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e); 这是Form1.cpp类中

我想在一个单独的.cpp文件中定义我的事件函数(例如:button click),而不是在windows forms.h文件中执行所有函数定义,该文件中已经包含了为windows forms GUI生成的代码

我试着这么做, Form1.h类中的声明:

private: System::Void ganttBar1_Paint
(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e);
这是Form1.cpp类中的定义:

#include "Form1.h"

System::Void Form1::ganttBar1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e)
{
    // Definition
}
执行此操作时,.cpp文件中会出现编译器错误,表示它不是类或命名空间名称

如何获取seprate文件中事件函数的定义和声明?


<>我是不是愚蠢,在这里漏掉了什么东西?还是我必须用C++的另一种方式来做这些事情?< /P> < P>你的类定义很可能在某些命名空间内(我将使用<代码>项目1>代码>作为占位符):

因此,您的定义也需要是:

#include "Form1.h"

namespace Project1
{
    void Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
    {
        // definition
    }
}


您的类定义很可能位于某个命名空间内(我将使用
Project1
作为占位符):

因此,您的定义也需要是:

#include "Form1.h"

namespace Project1
{
    void Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
    {
        // definition
    }
}


不确定这是否与C++标准有什么关系,这不是一些C++/CLI设计原理吗?@ EdCUM:它不是设计原理,而是一个不知道如何将声明与定义分开的可怜的WiFrm代码生成器。生成代码的一个帖子会帮助我们不确定这是否与C++标准有什么关系,这不是某种C++/cli设计原理吗?@EdChum:这不是一种设计原理,更不是一个糟糕的WinForms代码生成器,它不知道如何将声明与定义分开。@ildjarn抱歉,请重新阅读最后一行并理解OP所说的,发布生成的代码会有所帮助,谢谢!我忘记了名称空间,它现在就像一个符咒!非常感谢。我忘记了名称空间,它现在就像一个符咒!
#include "Form1.h"

void Project1::Form1::ganttBar1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
    // definition
}