【发布时间】:2018-09-25 04:23:07
【问题描述】:
所以我已经有了一个可以打开 .csv 文件的有效拖放框。我还想添加一个打开文件的 openfiledialog 方法。在我的拖放功能中,我有:
private void panel1_DragDrop(object sender, DragEventArgs e)
{
Console.WriteLine("Here 1");
firstTimeThrough = true;
timer.Stop();
if (browseRecordFiles == true)
{
files = (string[])e.Data.GetData(fileLocation, false);
} else
{
files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
}
显然 ...GetData(fileLocation, false);不能在这里工作。对此有不同的解决方法吗?我有一个 ForEach 循环,然后遍历“文件”,这就是为什么我希望它以这种方式工作。
“browseRecordFiles”是一个布尔值,如果单击“浏览”按钮则为真。
即:fileLocation 将是 c:\users\Administrator\desktop\something.csv
编辑:我有一个按钮可以打开文件对话框,但是我有一个 ForEach 循环,如下所示:
foreach (string file in files)
{
try
{
using (var reader = new StreamReader(file)) // reading the file
{
while (!reader.EndOfStream) // Read until the end of the stream
{
var line = reader.ReadLine().Replace("\"", "");
//Console.WriteLine(line);
var values = line.Split(',', ' '); // Ignore the , in the .CSV file and start next read column
foreach (var k in values)
{
//Console.WriteLine(k);
}
data.Add(values); // Add all values to data list
}
Files 是一个字符串数组,但仅保存拖放文件的文件路径。有没有办法通过从打开文件对话框中获取文件路径来“模仿”这种情况,就像用户将文件拖放到它上面一样?
【问题讨论】:
-
这是 Windows 窗体吗?如果是这样,您应该用它来标记问题。
-
void panel1_DragDrop在文件被删除时触发。你需要一个button_Clicked,当点击按钮打开文件对话框时触发。