C#将用户输入Box的路径传递给字符串

时间:2016-08-28 14:38:19

标签: c# visual-studio

我是C#编程的新手,我遇到了一些我无法解决的小问题。我正在创建一个小应用程序,它将有3个输入框,如下面的截图所示。当用户单击“源”按钮时,可以自由选择源文件夹。一旦他选择OK,文件夹旁边的文本框将填充路径。所以我得到了那部分工作。 现在的问题是,我正在耗尽人才来弄清楚为什么来自框的路径没有传递给代码中的字符串。例如,如果我键入List的位置并放入字符串Item_List,则代码可以正常工作。如果我想对字符串Source和Destination执行相同的操作,那么应用程序就可以正常工作。但是,当我尝试让用户通过简单地选择路径目的地来设置这些变量时,它不起作用。所以只需要看看我错过了什么。为什么来自C:\ Files的文本框中的值未传递给字符串Source = @“”。我假设我在错误的方式处理这个因为“\”或者它可能是其他的东西。有什么想法吗?

Appscreenshot

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        string Source = @"";
        string Destination = @"";
        string Item_List = @"C:\Users\Slavoljub Petkovic\Desktop\List.txt";


        public Form1()
        {
            InitializeComponent();
        }
        //------------Form1 Load()----------------------------


        private void Form1_Load(object sender, EventArgs e)
        {

          Source = tbSource.Text;
          Destination = Convert.ToString(tbDestination.Text);


        }
        //-----------Move Files In The List-------------------

        private void MoveFileInList()
        {

            StreamReader sr;
            string curFile;
            string to_file, from_file;
            sr = File.OpenText(Item_List);
            curFile = sr.ReadLine();
            while (curFile != null)
            {
                to_file = Destination + "/" + curFile;
                from_file = Source + "/" + curFile;
                File.Move(from_file, to_file);
                curFile = sr.ReadLine();
            }
            sr.Close();
        }


        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }


        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            MoveFileInList();
        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void Box_Source_TextChanged(object sender, EventArgs e)
        {

        }

        private void Box_List_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click_1(object sender, EventArgs e)
        {


        }

        private void folderBrowserDialog1_HelpRequest(object sender, EventArgs e)
        {

        }

        private void DestinationPath_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                this.tbDestination.Text = folderBrowserDialog1.SelectedPath;
            }
        }

        private void SourcePath_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                this.tbSource.Text = folderBrowserDialog1.SelectedPath;
            }
        }

        private void ListPath_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                this.tbList.Text = folderBrowserDialog1.SelectedPath;
            }
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {

        }

        private void tbList_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

您要将源和目标文本框的值分配给表单加载事件中的两个变量。

Source = tbSource.Text;
Destination = tbDestination.Text;

这些变量包含表单加载时在这些文本框中编写的文本,并且在文本框中的文本发生更改时不会更新。

在MoveFileInList方法中使用这些值时,它们将包含加载时的文本框值,而不是当前值。

to_file = Destination + "/" + curFile;
from_file = Source + "/" + curFile;

您要做的是阅读文本框的当前值。

to_file = Destination.Text + "/" + curFile;
from_file = Source.Text + "/" + curFile;