读取2行多行文本框的每一行

时间:2013-04-22 20:10:12

标签: c#

有没有办法读取2行多行文本框的每一行?在textBox1中,我使用以下代码作为包含压缩文件列表的多行字符串:

DirectoryInfo getExpandDLL = new DirectoryInfo(showExpandPath);
FileInfo[] expandDLL = getExpandDLL.GetFiles("*.dl_");
foreach (FileInfo listExpandDLL in expandDLL)
{
    textBox1.AppendText(listExpandDLL + Environment.NewLine);
}

目前我的部分代码是:

textBox2.Text = textBox1.Text.Replace("dl_", "dll");
string cmdLine = textDir.Text + "\\" + textBox1.Text + " " + textDir.Text + "\\" + textBox2.Text;
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "expand.exe";
startInfo.UseShellExecute = true;
startInfo.Arguments = cmdLine.Replace(Environment.NewLine, string.Empty);
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();

上面的代码采用textBox1中压缩文件的名称,并在textBox2中重命名,然后运行expand.exe以展开压缩文件。代码基本上以expand.exe为例给出了以下命令:

c:\users\nigel\desktop\file.dl_ c:\users\nigel\desktop\file.dll

如果文件夹在textBox1中只包含一行文本,则效果很好。使用多行文本命令基本上是:

c:\users\nigel\desktop\loadsoffiles.dl_ etc and doesnt work!

有没有办法读取textBox1的每一行,更改字符串并将其放入textBox2然后将命令传递给expand.exe?

string cmdLine = textDir.Text + "\\" + lineOFtextBox1 + " " + textDir.Text + "\\" + lineOftextBox2;

编辑:要明确:TextBox1包含:

  • somefile.dl _
  • someMore.dl _
  • evenmore.dl _

作为多元线。我的代码采用多行文本并将其放在textBox2中,因此它包含:

  • somefile.dll
  • someMore.dll
  • evenmore.dll

有没有办法读取每一行/获取textBox1和textBox2的每一行并用它做'东西'?

谢谢你!

4 个答案:

答案 0 :(得分:6)

您需要做的是循环遍历字符串数组,而不是使用单个字符串。请注意,TextBox具有“Lines”属性,可以为已经拆分为数组的行提供

foreach(string line in textBox1.Lines)
{
    //your code, but working with 'line' - one at a time

}

所以我认为你的完整解决方案是:

foreach (string line in textBox1.Lines)
{
    string cmdLine = textDir.Text + "\\" + line + " " + textDir.Text + "\\" + line.Replace("dl_", "dll");
    var process = new Process
        {
            StartInfo = new ProcessStartInfo
                {
                    FileName = "expand.exe",
                    Arguments = cmdLine.Replace(Environment.NewLine, string.Empty),
                    WindowStyle = ProcessWindowStyle.Normal,
                    UseShellExecute = true
                }
        };
    process.Start();
    process.WaitForExit();
}

请注意,我们正在为文本框中的每一行启动一个进程,我认为这是正确的行为

答案 1 :(得分:1)

首先Google点击告诉我们以下内容:

string txt = TextBox1.Text;
string[] lst = txt.Split(new Char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:1)

您可以尝试使用此代码

string a = txtMulti.Text;

string[] delimiter = {Environment.NewLine};

string[] b = a.Split(delimiter, StringSplitOptions.None); 

答案 3 :(得分:-1)

您也可以执行此简单的操作

foreach (string line in TextBox.Split('\n'))
{

}