【问题标题】:Filename pattern not working in OpenFileDialog文件名模式在 OpenFileDialog 中不起作用
【发布时间】:2014-08-19 10:40:33
【问题描述】:

几天前我开始学习编程,我正在研究/练习一个同时复制和粘贴多个文件的程序,但是在让它在多个不同的扩展上工作时遇到了麻烦

这是代码

命名空间实践 { 公共部分类Form1:表格 { 公共表格1() { 初始化组件(); } 公共字符串[] getFlies { 得到; 放; } 公共字符串获取目录 { 得到; 放; } 公共字符串 [] 获取扩展 { 得到; 放; } 私人无效按钮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(); } }

我该怎么办?

【问题讨论】:

  • 你想做什么?您必须根据其扩展名专门处理每个文件?在这种情况下,在 getFlies 上的 foreach 循环中,您只需要检查它并按照您的意愿行事

标签: c# winforms


【解决方案1】:

我建议您将变量的名称更改为更好的名称。但为了与您的代码保持一致,我使用了您选择的名称。
好的,你可以这样做:

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

【讨论】:

    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多