Использование Visual Studio и Windows Forms (C #) для загрузки и переименования файла на сетевой диск - PullRequest
0 голосов
/ 25 октября 2018

Вот код, над которым я работаю:

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog
            {
                InitialDirectory = @"C:\",
                Title = "Add a PDF",

                CheckFileExists = true,
                CheckPathExists = true,

                DefaultExt = "pdf",
                Filter = "pdf files (*.pdf)|*.pdf",
                FilterIndex = 2,
                RestoreDirectory = true,

                ReadOnlyChecked = true,
                ShowReadOnly = true
            };

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog1.FileName;
                string myFile = textBox1.Text;
                Console.WriteLine(myFile);

            }
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        System.IO.File.Move(myFile, @"C:\testing\records\file.pdf");
    }
}

}

Так что в любом случае в button2, я пытаюсь настроить несколько вещей.Я хочу добавить кнопку, которая сохраняет файл, используя строку System.IO там.Но когда я добавляю кнопку, я не могу заставить ее работать должным образом.Переменная myFile, похоже, больше не объявляется.Я уверен, что это, пожалуй, самый грязный код, который кто-нибудь вставит сюда сегодня, но большая часть его была автоматически сгенерирована Visual Studio, и я боюсь его очищать, потому что я не уверен на 100%, что некоторые из этоговещи есть.Я пытался вырезать и вставлять кнопочные элементы ближе к объявлению переменной myFile, так как оно закрытое, и, возможно, именно поэтому оно больше не знает, что это значит.Но когда я перемещаю его туда, в начале вызова кнопки я получаю другую ошибку, касающуюся «частного».

1 Ответ

0 голосов
/ 25 октября 2018

Проблема здесь в том, что вы объявляете переменную myFile в области действия оператора if, и поэтому, когда этот блок оператора if выходит из переменной myFile, она выходит из области видимости и больше не существует.

Чтобы получитьчтобы это работало, вам нужно переместить создание переменной myFile на уровень класса.

public class Form1 : Form
{
    private string myFile;

    public Form1()
    {
        InitializeComponent();
    }

    // Other code snipped out
}

Теперь измените код button1_Click, чтобы вместо создания экземпляра myFile:

string myFile = textBox1.Text;

Вы просто заполняете закрытую переменную, которую вы объявили в основной части кода:

myFile = textBox1.Text;

Таким образом, выражение if выглядит так:

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    textBox1.Text = openFileDialog1.FileName;
    myFile = textBox1.Text;
    Console.WriteLine(myFile);
}

Вам нужно немного изменитьto button2_Click:

private void button2_Click(object sender, EventArgs e)
{
    // Check that myFile has some text and isn't null.
    if (string.IsNullOrWhitespace(myFile))
        return;

    // Check that the file exists before attempting to move it.
    if (File.Exists(myFile))
        System.IO.File.Move(myFile, @"C:\testing\records\file.pdf");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...