CommonOpenFileDialog открывается снова после выбора файла

#c# #textbox #microsoft-metro #openfiledialog #metroframework

#c# #текстовое поле #microsoft-metro #openfiledialog #metroframework

Вопрос:

 CommonOpenFileDialog cicon = new CommonOpenFileDialog();
        cicon.IsFolderPicker = false;
        cicon.Title = "Choose Icon";
        cicon.Filters.Add(new CommonFileDialogFilter("Executable Files", "*.exe"));
        cicon.Filters.Add(new CommonFileDialogFilter("Icon Files", "*.ico*"));
        if (cicon.ShowDialog() == CommonFileDialogResult.Ok)
        {
            try
            {
                Image fico = System.Drawing.Icon.ExtractAssociatedIcon(cicon.FileName).ToBitmap();
                metroTextBox1.Icon = fico;
            }
            catch (Exception re)
            {
                winmsg msg = new winmsg();
                msg.Title = "Icon Error -  Cannot find any Icon";
                msg.Content = "Path: "   re.Message;
                msg.ShowDialog();
                msg.Dispose();
            }
        }
        else
        {
            return;
        }
 

Я получаю диалоговое окно открытия файла после выбора файла, в чем может быть проблема? Приведенный выше код для нажатия на CustomButton в Metrotextbox.

Комментарии:

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

2. Нет, никакого другого кода, только на этой кнопке, при первом запуске у него нет проблем.. только при выборе во второй раз, если вы решили изменить файл, который уже выбран, во второй раз, когда нажимаете на эту кнопку, открываете диалоговое окно 2 раза после нажатия ok,..

3. Где диалоговое окно открывается во второй раз, когда вы отслеживаете код?

4. Он повторяет тот же код, что и выше, я использовал click программно, может ли это решить проблему? metroTextBox1.CustomButton.Click = CustomButton_Click;

5. Да, это была проблема, metroTextBox1.CustomButton.Click = CustomButton_Click; вызывался дважды.. Спасибо тебе @JohnG