C# 如何从随机选取的多个文件中执行文件?
我对这件事很陌生。实际上这是我的第一部作品。我想要一个从文本框读取随机文件计数的程序。它还有一个按钮,可以从选定的路径随机排列文件。我需要打开列表框中的文件 我的问题是,当我双击列表框时,它会打开列表中的最后一个文件,无论我单击了哪个文件。我试着在下面加上两条斜线。但它也不起作用。我能做什么C# 如何从随机选取的多个文件中执行文件?,c#,windows,process,C#,Windows,Process,我对这件事很陌生。实际上这是我的第一部作品。我想要一个从文本框读取随机文件计数的程序。它还有一个按钮,可以从选定的路径随机排列文件。我需要打开列表框中的文件 我的问题是,当我双击列表框时,它会打开列表中的最后一个文件,无论我单击了哪个文件。我试着在下面加上两条斜线。但它也不起作用。我能做什么 public Form1() { InitializeComponent(); } Random r = new Random(); string path1
public Form1()
{
InitializeComponent();
}
Random r = new Random();
string path1;
DirectoryInfo dif;
FileInfo[] files;
int randomchoose;
//FileInfo[] files2;
//int hoho;
int[] randomcount;
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog hoho = new FolderBrowserDialog();
hoho.ShowNewFolderButton = true;
if (hoho.ShowDialog() == DialogResult.OK)
{
path1 = hoho.SelectedPath;
textBox1.Text = path1;
dif = new DirectoryInfo(path1);
files = dif.GetFiles();
}
}
private void btnrasgele_Click(object sender, EventArgs e)
{
randomcount = new int[Convert.ToInt32(textBox3.Text)];
// int hoho=0;
foreach (int k in randomcount)
{
int pd = files.Length;
randomchoose = r.Next(0, Convert.ToInt32(pd + 1));
listBox1.Items.Add(files[randomchoose]);
//files2[hoho] = files[randomchoose].FullName;
}
}
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
//listBox1.SelectedIndex = hoho;
//Process.Start(files2[hoho].FullName);
Process.Start(files[randomchoose].FullName);
}
您传入了固定在该点的
randomchoose
,请尝试以下操作:
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if(listBox1.SelectedItem != null)
Process.Start(((FileInfo)listBox1.SelectedItem).FullName);
}
不,遗憾的是,它给出了“win32exception未处理”。我想我们需要进程内的完整路径@mehmtDemir这是我的错误,我以为您在列表框的每个项目中都添加了
全名
,但它是文件信息
,刚刚更新。谢谢,它很有效。如果我想把它扩展到它的子目录,我能做什么?非常感谢。@mehmtDemir您可能希望使用列表视图
来显示所选文件夹的所有子目录
。它与Windows资源管理器文件夹listview的外观几乎相同。为此,您还可以使用TreeView
。只需获取DirectoryInfo
并使用GetDirectories
方法获取所有子目录,并将它们添加为TreeView
中当前节点的子节点。。。要做的工作有点多。你应该先试试你自己,如果遇到任何问题,试着发布另一个问题。我用“files=dif.GetFiles(“*”,SearchOption.AllDirectories);”替换它,现在就可以了。是这么简单还是有更有效的方法?再次感谢。