windows - 如何在 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。正如我提到的一切都很好,只是试图找到一种方法来隐藏那个讨厌的命令窗口弹出窗口。
解决方案
正如 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);
}
推荐阅读
- flutter - 我们可以在 VS Code 中打开在 Android Studio 中创建的颤振项目吗?
- qt - 如果隐藏,如何防止 QWidget 调整大小,并在显示小部件后处理相同的调整大小事件?
- mongodb - MongoDB 扩展参考模式 - 管理数据重复
- javascript - 在css中使用剪辑路径的曲线边框
- javascript - 滚动 Reactjs 中的问题列表
- flutter - 例外:不支持的 Android 插件版本:4.1.2
- php - 尝试在 null 上分配属性“parent_id”
- python - python shell与IDLE中元组处理的区别
- c++ - 曲线之间的 3D 插值
- android-management-api - 企业列表调用在 Android 管理 API 中不可用如何在我的 EMM 控制台中实现它?