允许函数以另一种形式查看列表框

Allowing a function to see listbox in another form

我的所有代码都在我的 .cpp 文件中。我在那里有一个功能:

void funct1 (void)    
{
    ...
    if (num_fields) {
        for (ix = 0; ix < num_fields; ix++)
            if (status == OK)
                checkedListBox1->Items->Add(gcnew String(buffer));
    } else
        checkedListBox1->Items->Add("No available extra data fields");
}

但是我的函数无法从我的 Form5.h.

中看到 checkedlistbox1

如何让我的函数看到这个?

我正在从我的 cpp 文件中调用我的函数:

System::Void Form5::MainMAFBrowseBtn_Click(System::Object^  sender,
        System::EventArgs^  e) {
    checkedListBox1->Items->Clear();
    System::String^ paf_path2 = textBox1->Text;

    FolderBrowserDialog^ folderBrowserDialog1;
    folderBrowserDialog1 = gcnew System::Windows::Forms::FolderBrowserDialog;
    folderBrowserDialog1->Description = L"Select the directory of your MAF files ";
    folderBrowserDialog1->ShowNewFolderButton = false;      

     // Show the FolderBrowserDialog.
    System::Windows::Forms::DialogResult result = folderBrowserDialog1->ShowDialog();
    if ( result == ::DialogResult::OK )
        paf_path2 = folderBrowserDialog1->SelectedPath;
    textBox1->Text = paf_path2;

    paf_path = (char*)(void*)Marshal::StringToHGlobalAnsi(paf_path2);

    funct1();
}

如果 functl() 不是 class 的一部分,您需要将 checkedListBox1 作为参数传入,如下所示:

void funct1(System::Windows::Forms::CheckedListBox% checkedListBox1)
{
    ...
}

比你的调​​用函数:

System::Void Form5::MainMAFBrowseBtn_Click(System::Object^  sender, System::EventArgs^  e)
{
    ...
    functl(checkedListBox1);
}

or 在你的 class Form5 你可以把 functl 的声明放在那里:

class Form5
{
    ...
private:
    void functl();
};

然后在您的 .cpp 文件中将 functl 声明为:

void Form5::functl()
{
    /// Now you have direct access to checkedListBox1.
}