Как я могу установить размер окна Excel? [Дубликат]

1

У меня есть окно wpf, которое должно быть открыто рядом с окном Excel. Excel открывается и обрабатывается с помощью Interop.Excel. В моем окне у меня есть метод, который должен установить размер окна excel.

private void SetLayout()
        {
            Top = 0;
            Left = 0;
            Height = SystemParameters.WorkArea.Height;
            ((ConfiguratorWindowViewModel) DataContext).Manager.App.Height =
                SystemParameters.WorkArea.Height;
            ((ConfiguratorWindowViewModel) DataContext).Manager.App.Left = Width;
            ((ConfiguratorWindowViewModel) DataContext).Manager.App.Width = SystemParameters.WorkArea.Width - Width;
        }

В моей модели Viewmodel у меня есть менеджер, который возвращает открытое приложение Excel (Office.Interop.Excel.Application). Я могу установить Height, Top,.. моего окна wpf, и он отлично работает, но не в окне Excel. Как я могу установить размер окна Excel рядом со своим окном wpf, чтобы два заполнили весь экран вместе?

Редактировать:

Я пробовал это, но он также не работает:

((ConfiguratorWindowViewModel) DataContext).Manager.App.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlNormal;
((ConfiguratorWindowViewModel) DataContext).Manager.App.ActiveWindow.Height = Screen.PrimaryScreen.Bounds.Height;
((ConfiguratorWindowViewModel) DataContext).Manager.App.ActiveWindow.Width = Screen.PrimaryScreen.Bounds.Width - Width;

Оба устанавливают высоту на другое значение, но не на правильное, когда я жестко .Height=800; его .Height=800; он также не работает.

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

Редактировать:

Вопрос не такой, как этот (как изменить размер окна другой программы?). Я не хочу менять размер "чужого" приложения.

Теги:
excel
wpf
office-interop
excel-interop

1 ответ

4

Допустим, у вас есть приложение excel, хранящееся в переменной под названием App. Тогда вы можете сделать что-то вроде этого:

App.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlNormal;
App.ActiveWindow.Height = Screen.PrimaryScreen.Bounds.Height;
App.ActiveWindow.Width = Screen.PrimaryScreen.Bounds.Width;

Экран-класс используется для получения разрешения основного экрана.

Возможно, вы также можете просто увеличить окно:

 App.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized
  • 0
    По некоторым причинам это не работает. Он не помещает правильное значение в App.ActiveWindow.Height и .Width, там есть совершенно разные значения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню