2017-02-20 21 views
0

У меня есть OpenFileDialog в Windows Form, который работает абсолютно нормально, но если я хочу сделать то же самое в надстройке Excel, он, похоже, ничего не делает. Ниже приведен фрагмент моего кода, однако я изо всех сил пытаюсь понять, где проблема, поскольку код идентичен для обоих (текстовое поле, openFileDialog и имена кнопок идентичны).OpenFileDialog не работает, когда в надстройке Excel?

public partial class DashboardControl : UserControl 
{ 
    public DashboardControl() 
    { 
     InitializeComponent(); 
    } 

    private void DashboardControl_Load(object sender, EventArgs e) 
    { 

    } 

    private void fileLocationText_TextChanged(object sender, EventArgs e) 
    { 

    } 


    private void openFile_Click(object sender, EventArgs e) 
    { 
     openFileDialog1.ShowDialog(); 

    } 

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e) 
    { 
     fileLocationText.Text = openFileDialog1.FileName; 
    } 
} 

ответ

0

Похоже, диалог отображается за окном Excel. Вам необходимо установить родительское окно hanlde для диалога ro, чтобы он довел его до фронта. См. SetForegroundWindow functin, который приносит поток, который создал указанное окно на передний план, и активирует окно. Ввод клавиатуры направлен в окно, и различные зрительные сигналы изменяются для пользователя. Система присваивает немного более высокий приоритет потоку, который создал окно переднего плана, чем для других потоков.

Обратите внимание, что Show и ShowDialog методы System.Windows.Forms.Form класса принимает экземпляр интерфейса IWin32Window, который позволяет указать родительский дескриптор окна.