Как вернуть строку из обработчика нажатия кнопки? - PullRequest
0 голосов
/ 25 мая 2010

Мне нужно вернуть строку из метода кнопки. Как я могу это сделать?

private string folderPathButton_Click(object sender, EventArgs e)
{
    FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
    folderBrowser.ShowDialog();
    string folderPath = folderBrowser.SelectedPath;                 
    return folderPath;           
}

По этому методу при нажатии кнопки я получаю путь к папке. Теперь мне нужно его вернуть. Но этот код не работает? Кто-нибудь может помочь мне решить проблему? Как я могу вернуть путь к папке и вызвать его из другого метода ??

Ответы [ 9 ]

3 голосов
/ 25 мая 2010

Вы не можете изменить подпись события.

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

private void folderPathButton_Click(object sender, EventArgs e)
{
    browseAndStuff();
}

private string browseAndStuff()
{
    FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
    folderBrowser.ShowDialog();
    string folderPath = folderBrowser.SelectedPath;                 
    return folderPath;           
}
2 голосов
/ 25 мая 2010

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

2 голосов
/ 25 мая 2010

Вы не можете сделать это, событие click возвращает void.

1 голос
/ 25 мая 2010

Как уже объяснили другие, вам нужно будет сделать что-то подобное и добавить защиту, чтобы вы случайно не перезаписали значение, если пользователь хочет отменить из диалогового окна.

private string myFolderPath;

private string folderPathButton_Click(object sender, EventArgs e)
{
    FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
    if(DialogResult.OK == folderBrowser.ShowDialog())
    {
        myFolderPath = folderBrowser.SelectedPath;    
    }
}
1 голос
/ 25 мая 2010

Извините, что не ответили на вопрос, который вы задали, но, как уже говорили другие, - я не верю, что это возможно.

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

private string folderPathButton_Click(object sender, EventArgs e)
{
    FolderBrowserDialog folderBrowser = new FolderBrowserDialog();
    folderBrowser.ShowDialog();
    txtFolder.Text = folderBrowser.SelectedPath;                 
}

Предполагается, что txtFolder - это имя вашего элемента управления textbox.

0 голосов
/ 25 мая 2010

Вы не можете изменить сигнатуру события нажатия кнопки, поэтому вам нужно обработать строковое значение, которое вы хотите вернуть, когда кнопка нажимается какой-то другой логикой. Вы можете сохранить переменную класса в классе или отобразить строку в метке, текстовом поле или каком-либо другом графическом компоненте в рассматриваемой форме. Если вы хотите сохранить или открыть файл, используя выбранный путь, вы можете передать путь другой функции, которая выполняет сохранение / загрузку, а затем либо показать пользователю файл или его содержимое (открыв его или отобразив его содержимое на (в зависимости от требований) или уведомить пользователя об успешном сохранении файла по указанному пути.

0 голосов
/ 25 мая 2010

Обработчик события click срабатывает, когда пользователь нажимает на эту кнопку. Итак, вы начинаете действовать там. Вы можете использовать любой другой метод, который выполняет все, что вы пытаетесь сделать в этом методе.

0 голосов
/ 25 мая 2010

Предполагается, что обработчик события click имеет тип возврата void, поэтому вы ничего не можете вернуть из него. Обработчик события вызывается при нажатии кнопки, поэтому нет смысла вызывать его самостоятельно.

Если вы хотите сохранить путь к папке для последующей обработки, просто сохраните его в поле / свойстве.

0 голосов
/ 25 мая 2010

Метод срабатывает, когда вы нажимаете кнопку, и в этот момент вы сохраняете путь к папке в переменной пути_папки - затем вы возвращаете строку туда, откуда вы пришли, то есть нигде (нажатие кнопки не сохранит переменные).

Итак, вам нужно создать переменную класса и присвоить ей значение в методе кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...