几天前我开始学习编程,我正在工作/练习一个同时复制和粘贴多个文件的程序,但是在让它在多个不同的扩展上工作时遇到了麻烦
这是代码
命名空间实践
{
公共(public)部分类Form1:表格
{
公共(public)表格1()
{
初始化组件();
}
公共(public)字符串[] getFlies
{
得到;
放;
}
公共(public)字符串获取目录
{
得到;
放;
}
公共(public)字符串 [] 获取扩展
{
得到;
放;
}
私有(private)无效按钮1_Click(对象发送者,EventArgs e)
{
尝试
{
OpenFileDialog getfiles = new OpenFileDialog();
getfiles.Filter = "所有文件 (.)|.";
getfiles.FilterIndex = 1;
getfiles.Multiselect = true; if (getfiles.ShowDialog() == DialogResult.OK)
{
getFlies = getfiles.FileNames;
foreach (string file_name in getFlies)
{
listBox1.Items.Add(file_name);
getextension = Path.GetExtension(getFlies);
}
}
}
catch
{
MessageBox.Show("Error");
}
}
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbb = new FolderBrowserDialog();
fbb.Description = "Select a folder";
if (fbb.ShowDialog() == DialogResult.OK)
{
getdirectory = fbb.SelectedPath;
}
}
private void button3_Click(object sender, EventArgs e)
{
foreach (object item in listBox1.Items)
{
File.Copy(getFlies.ToString(), getdirectory);
}
}
private void button4_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
}
我该怎么办?
最佳答案
我建议您将变量的名称更改为更好的名称。但是为了与您的代码保持一致,我使用了您选择的名称。
好的,你可以这样做:
// instead of string[].
public FileInfo[] getFlies { get; set; } // I suggest to change the name, maybe to Files?
// in your button1_click method, after the DialogResult is OK
// getFiles in the dialog and getFlies is the array.
public void button1_Click(object sender, EventArgs e)
{
var getfiles = new OpenFileDialog(); // again, change the name...maybe for dialog?
getfiles.Filter = "All Files (*.*)|*.*"; // I fixed it. You missed the '*' .
// more dialog initialization
if(Dialog.Result.OK == getfiles.ShowDialog())
{
getFlies = getfiles.FileNames.Select( f => new FileInfo(f)).ToArray();
}
}
// Now, in button3_click
void button3_Click(object sender, EventArgs e)
{
foreach(var file in getFlies)
{
File.Copy(file.FullName, Path.Combine(getdirectory, file.Name));
}
}
关于c# - 文件名模式在 OpenFileDialog 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24466750/