首页 > 解决方案 > 如何在 Windows 窗体中使用默认 CSV 编辑器打开文件?

问题描述

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

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());
}

但是,我想避免使用系统功能,因为我不喜欢在启动默认编辑器程序时它会闪烁命令窗口。

我努力了:

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作为我的其他系统功能命令的替代品,但不是在这里。

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

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

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

标签: windowsvisual-studiowinformscsvc++-cli

解决方案


正如 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);
    }

推荐阅读