Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
1

Как использовать объект Word, если он объявлен в другой зоне видимости

04.04.2012, 16:40. Показов 946. Ответов 9
Метки нет (Все метки)

Добрый день!

При нажатии на кнопку приложения создаю объект Word.

C#
1
2
3
4
        private void button1_Click(object sender, EventArgs e)
        {
            Word.Application app = new Word.Application();
        }
По завершении программы я хочу проверить, что этот объект был удален.

C#
1
2
3
4
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            app.Quit();
        }
Но выдает ошибку, что элемент "app" не существует в контексте функции Form1_FormClosing().

Создавать объект Word сразу, при запуске приложения, объявив его перед функций public Form1(), я не могу, потому что не факт, что у пользователя установлен Word. Мне нужно создавать этот объект только в том случае, если пользователь ткнул по кнопке. Но как тогда сделать app.Quit() при выходе из программы?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 16:40
Ответы с готовыми решениями:

Как использовать объект из одной процедуры в другой?
Если объект класса существует, только пока проходит выполнение процедуры, то как использовать...

Как перенести диаграмму (другой объект) из Excel в Word
Как с помощью VBA перенести диаграмму (другой объект) из Excel в Word в виде картинки ? Подскажите...

Как сделать, чтобы при открытии форма растягивалась во весь экран и расположенные на ней объекты были всегда в зоне видимости?
Такое вообще возможно?

Если создать объект Graphics в модуле или в форме, то картинка прорисовывается не на всю область видимости
Здравствуйте, если создать объект Graphics в модуле или в форме, то картинка прорисовывается не на...

9
710 / 677 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
04.04.2012, 17:21 2
не подойдет?

C#
1
2
3
4
5
6
7
8
9
10
11
12
        Word.Application app;
        private void button1_Click(object sender, EventArgs e)
        {
            app = new Word.Application();
            appclose(app);
 
        }
 
        public void appclose(Word.Application ap)
        {
            ap.Quit();
        }
Добавлено через 13 минут
ну или так, не уверен где он его пытается открыть
C#
1
2
3
4
5
6
7
8
9
10
11
        private void button1_Click(object sender, EventArgs e)
        {
            Word.Application app = new Word.Application();
            appclose(app);
 
        }
 
        public void appclose(Word.Application ap)
        {
            ap.Quit();
        }
0
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
04.04.2012, 17:26  [ТС] 3
При выходе из программы на строке
ap.Quit();

пишет ошибку: В экземпляре объекта не задана ссылка на объект.

Добавлено через 3 минуты
Создать Word.Application app вне функции button1_Click нельзя, потому что не у всех пользователей есть Word.

Если же его создать внутри функции, то этот объект нельзя прихлопнуть при выходе из программы (если функция до конца не отработала, а пользователь закрыл форму, то приложение Word будет висеть в процессах).
0
710 / 677 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
04.04.2012, 17:27 4
а если
C#
1
2
if (ap!=null)
ap.Quit
?
0
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
04.04.2012, 17:31  [ТС] 5
Tessen,

не получается. Мы создаем приложение Word в области видимости функции button1_Click,
это приложение просто не видно из других функций.

Добавлено через 20 секунд
А создавать приложение Word сразу, при запуске программы, нельзя.
0
710 / 677 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
04.04.2012, 17:55 6
т.е.
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void button1_Click(object sender, EventArgs e)
        {
            Word.Application app = new Word.Application();
            appclose(app);
 
        }
 
        public void appclose(Word.Application ap)
        {
            if (ap!=null)
            ap.Quit();
        }
не работает? а что пишет хоть?
0
348 / 327 / 49
Регистрация: 12.12.2011
Сообщений: 563
04.04.2012, 17:56 7
C#
1
2
3
4
5
6
7
8
9
        Word.Application app;
        private void button1_Click(object sender, EventArgs e)
        {
            app = new Word.Application();
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if(app != null) app.Quit();
        }
А так?
0
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
05.04.2012, 10:17  [ТС] 8
Tessen, пишет, что "Элемент "app" не существует в текущем контексте" для функции Form1_FormClosing.


Yukikaze,
но таким образом приложение Word создается сразу после запуска программы. А мне нужно, чтобы оно создавалось только, если пользователь нажмет на кнопку.

Кстати, можно как-то обработать ошибку на строке:
C#
1
Word.Application app = new Word.Application();
если у пользователя не установлен Word?
Т.е. если эта строка выдает ошибку, то совершить какие-то действия.
0
348 / 327 / 49
Регистрация: 12.12.2011
Сообщений: 563
05.04.2012, 12:22 9
Suppir, эммм, сейчас добавлю комментрий
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Word.Application app; //Объявляем поле класса
        private void button1_Click(object sender, EventArgs e) /Кнопка 1
        {
            try
            {   
                 app = new Word.Application(); //инициализируем новый экземпляр
            } catch (Exception ex) //Ловим ошибки
            {
                  MessageBox.Show(ex.Message); //Выводим их
            }
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e) //Кнопка 2
        {
            if(app != null) app.Quit();  //если экземпляр создан - закрываем его
        }
1
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,160
05.04.2012, 14:03  [ТС] 10
Спасибо, попробую!
Если что - отпишусь.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2012, 14:03

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как создать объект класса и использовать его методы, если уже был определен конструктор
Вот код, в нем есть конструктор public Tmas(string path). namespace lab4_OOP { class Tmas...

Как обратиться к созданному объекту, если переменной присвоен уже другой объект?
Всем привет, Допустим, у меня есть класс, назовем его MyClass. Я объявляю переменную x, затем...

Проверка на нахождение в зоне видимости. Вопрос.
Доброго времени суток, форумчане! Прошу помощи в вопросе: Пишу программу, вроде фотогаллереи, для...

Как связывается целевой объект с функцией-обработчиком, если использовать модель событий W3C DOM уровня 2?
Привет. 1. Если я пишу function func(){...}; document.getElementById("red").onclick=func; , то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.