Как получить доступ к переменной из события button_Click в приложении Windows Form? - PullRequest
0 голосов
/ 06 июля 2018

В настоящее время я работаю над приложением формы Windows, в котором мне нужно сохранить изображение в локальном каталоге, а изображение - в базе данных SqlServer. На главной форме я использовал кнопку просмотра изображения, которая показывает диалог файла при нажатии. И имя, и путь к изображению хранятся в двух отдельных строках, к которым я должен получить доступ из другого метода, который на самом деле хранит и заголовок, и путь к изображению вместе с некоторыми другими данными в базе данных.

Я использовал следующий код для кнопки просмотра изображения.

private void btnBrowseImage_Click(object sender, EventArgs e)
    {
        string saveDirectory = @"D:\ProductImages\";

        OpenFileDialog fileDialog = new OpenFileDialog();
        if (fileDialog.ShowDialog() == DialogResult.OK)
        {
            if(!Directory.Exists(saveDirectory))
            {
                Directory.CreateDirectory(saveDirectory);
            }

            string fileName = Path.GetFileName(fileDialog.FileName);
            string fileSavePath = Path.Combine(saveDirectory, fileName);
            File.Copy(fileDialog.FileName, fileSavePath, true);

            string imgTitle = Path.GetFileName(fileName);
            string imgPath = fileSavePath;
        }
    }

Теперь я хочу получить доступ к обеим переменным, содержащим имя файла и путь к файлу соответственно, из моей кнопки «Добавить в базу данных». Я передаю эти две переменные вместе с productName, unitPrice и количеством в метод AddProduct в моем вызове Products, где они фактически будут добавлены в базу данных, как показано в событии btnAddToDatabase_Click.

private void btnAddToDatabase_Click(object sender, EventArgs e)
    {

        string productName, unitPrice, quantity, image, imageTitle;

        productName = txtProductName.Text.Trim();
        unitPrice = txtUnitPrice.Text.Trim();
        quantity = txtQuantity.Text.Trim();
        image = 
        imageTitle = 

        Products.AddProduct(productName, quantity, unitPrice);
        FillGrid();
        btnClearFields_Click(sender, e);

    }

Я много пробовал, но не повезло, так как эти переменные не могут быть доступны напрямую из события кнопки обзора, чтобы я мог найти их там, где я хочу. Есть ли способ, который может помочь мне без сбоев?

1 Ответ

0 голосов
/ 06 июля 2018

Вам нужно объявить переменные в классе, а не в конкретном методе, тогда они будут иметь область действия уровня класса

public class YourClass
{
    private string fileName 
    private string filePath

    private void btnBrowseImage_Click(object sender, EventArgs e)
    {
        // code here
        fileName = Path.GetFileName(fileDialog.FileName);
        filePath= Path.Combine(saveDirectory, fileName);
    }

    private void btnAddToDatabase_Click(object sender, EventArgs e)
    {
        // code here
        fileName = "something";
        filePath="something";
    }
    // other methods
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...