Открывать папку, когда пользователь нажимает на кнопку диалогового окна и предотвращать закрытие диалога - PullRequest
0 голосов
/ 17 февраля 2019

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

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

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    this.DialogResult = DialogResult.No;      
}

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;     
}

В другом классе у меня есть метод, который возвращает значение bool в соответствии с dialogResult:

DialogResult res = dig.ShowDialog();
return res == DialogResult.No;

Затем, если эти методы возвращают true, мне нужно открыть проводник win и держать диалоговое окно открытым, пока кнопка не будет нажата.проблема заключается в том, что при попытке предотвратить закрытие диалога с событием FormClosing формы MyDialog проводник не открывается.И если я не использую FormClosing, открывается проводник, но диалоговое окно закрывается.

private void MyDialog_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.DialogResult == DialogResult.No)
    {
        e.Cancel = true;
    }
}

РЕДАКТИРОВАТЬ: Я не могу использовать событие Linkclicked формы, потому что я хочу, чтобы это диалоговое окнобыть многоразовым и обрабатывать результат каждый раз.(открытие разных путей зависит от того, где я использую диалог)

1 Ответ

0 голосов
/ 17 февраля 2019

Причина, по которой проводник не открывается, заключается в том, что когда вы отклоняете форму закрытия, родительский код не продолжает открывать проводник,
То, чего вы хотите добиться, мне немного неясно, но то, как вы это делаетеневозможно, как совет, почему бы не открыть FolderBrowserDialog из inisde MyDialog на основе label клика и закрыть MyDialog на button клике, вместо того, чтобы родительский обработчик принял решение.

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