私はC#プログラミングの新機能で、小さな問題を抱えています。下のスクリーンショットのように3つの入力ボックスを持つ小さなアプリケーションを作成しています。ユーザがソースボタンをクリックすると、ソースフォルダを自由に選択できます。彼がOKを選択すると、フォルダの横にあるText Boxにはpathが設定されます。その部分が機能しています。 問題は、ボックスからのパスがコード内の文字列に渡されない理由を理解するために才能が不足していることです。たとえば、リストの場所を入力して文字列Item_Listを入力すると、コードは正常に動作します。私は、ソースと宛先の文字列のために同じことをするなら、アプリは完全に正常に動作します。しかし、ユーザーがパスの宛先を選択するだけでこれらの変数を設定しようとすると、それは機能しません。だから私は何が欠けているかを見てみる必要があります。 C:\ Filesというテキストボックスの値が文字列Source = @ ""に渡されないのはなぜですか?私は "\"のためにこれを間違った方法で処理していると仮定しています。何か案は?C#ユーザ入力ボックスから文字列へのパスを渡す
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)
{
}
}
}
デバッガでコードをステップ実行しようとしましたか? –
'FolderBrowseDialog'を使うと、パス名を入力する手間を省くことができますし、誤植や誤ったパスをテストする必要もありません。 – Plutonix
はいとはい。 3つの入力すべてに対してFolderBrowseDialogを使用しています。そして、私はアプリをデバッグするとき、私の文字列SourceとDesrinationは空であると言います。しかし、私はそれらを入力テキストボックスと同等であると宣言しました。 – Slavisha