如何在 Windows 表单中使用默认的 CSV 编辑器打开文件?

How to open a file with the default CSV editor in Windows Forms?

我有一个正在开发的备份程序,它使用 Windows 表格进行设计。
除了一个按钮外,一切正常,所以我将保留整个代码。
我有一个 Button,允许用户从某个位置打开 CSV 文件以在其默认 CSV 编辑器程序(即 Excel、Libre 等)中进行编辑,并且 Button 工作正常,如下所示:

private: System::Void button17_Click(System::Object^ sender, System::EventArgs^ e) {
String^ CSVLoc = textBox1->Text;
string CSVLoc1 = msclr::interop::marshal_as<std::string>(CSVLoc);
system(("start " + CSVLoc1 + "\SystemIPs.csv").c_str());
}

但是,我想避免使用 system 函数,因为我不喜欢它在启动默认编辑器程序时闪烁命令 window。

我试过:

private: System::Void button17_Click(System::Object^ sender, System::EventArgs^ e) {
String^ CSVLoc = textBox1->Text;
string CSVLoc1 = msclr::interop::marshal_as<std::string>(CSVLoc);
WinExec(("start " + CSVLoc1 + "\SystemIPs.csv").c_str(), SW_HIDE);
}

但是当我点击按钮时它什么也没做。
WinExec 可以替代我的其他系统功能命令,但这里没有。

按钮的功能不是对我的程序进行任何编辑,因此不需要读取或写入它。只需要它在默认编辑器中打开而不需要弹出命令window。

我已经搜索了几个小时试图找到一个没有运气的解决方案。
我对这里的任何建议持开放态度,即使它使用的是系统功能,但我目前还不知道有一些巧妙的隐藏方式。

该程序专为 Windows 设计,并设置为 运行 作为 Windows 应用程序。使用 CLR 和 .Net 是 4.7.2。正如我提到的一切都很好,只是想找到一种方法来隐藏那个讨厌的命令 window 弹出窗口。

正如 Jimi 所说,您可以使用 Process.Start 方法使用默认编辑器打开 csv 文件。

首先,请添加命名空间引用。

using namespace System::Diagnostics;

其次,您可以尝试使用以下代码打开它。

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
        String^ str = textBox1->Text;
        Process::Start(str);
    }