C # - SaveFileDialog не отображается в качестве активного окна - PullRequest
1 голос
/ 03 марта 2010

Я делаю небольшую программу, чтобы открыть электронную таблицу Excel, обновить ее, сохранить в новый файл и закрыть все.

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

Кто-нибудь знает, как я это произвожу и на 1-й случай?

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

Вот код, который я использую для savefiledialog ...

SaveFileDialog saver = new SaveFileDialog();
            saver.FileName = "test";
            saver.DefaultExt = "xls";
            saver.Filter = "Microsoft Office Excel Workbook |(*.xls*)";
            saver.CheckFileExists = false;
            saver.InitialDirectory = "c:\\George";

        if (saver.ShowDialog() == DialogResult.OK)
            //MessageBox.Show("Save Dialog launched");
            excelWorkbook.SaveAs(saver.FileName, Type.Missing, Type.Missing,Type.Missing,
            Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing);

Большое спасибо, Джордж

Ответы [ 2 ]

0 голосов
/ 05 июня 2012

Хакерское, но работающее решение:

        saver.FileName = "test";
        saver.DefaultExt = "xls";
        saver.Filter = "Microsoft Office Excel Workbook |(*.xls*)";
        saver.CheckFileExists = false;
        saver.InitialDirectory = "c:\\George";
        Form dummyForm = new System.Windows.Forms.Form();
    if (saver.ShowDialog(dummyForm) == DialogResult.OK)
        //MessageBox.Show("Save Dialog launched");
        excelWorkbook.SaveAs(saver.FileName, Type.Missing, Type.Missing,Type.Missing,
        Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing);

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

0 голосов
/ 03 марта 2010

IIRC вы должны установить OwnerWndProc в качестве главного окна приложения Excel.

...