Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 57

Кнопка отмены

07.12.2014, 23:36. Показов 2295. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Записываю данные из datagridview в файл .docx , все записывает и создает , но вылетает ошибка при нажатии "отмена" в окне сохранения. Помогите исправить

Вот код метода
void Button4Click(object sender, EventArgs e)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{
            if (dataGridView1.SelectedRows.Count == 0)
                return;
            if (dataGridView1.SelectedRows[0].IsNewRow==true)
                return;
            
            int id = (int)dataGridView1.SelectedRows[0].Cells["ID"].Value;          
            int num = (int)dataGridView1.SelectedRows[0].Cells["Номер_заказа"].Value;            
            int n = (int)dataGridView1.SelectedRows[0].Cells["Номер_счета_заказчика"].Value;
            DateTime t = (DateTime)dataGridView1.SelectedRows[0].Cells["Дата_заказа"].Value;
            orderZ chek = CreateTransfer(id,num,n);
            
            Word.Application app = new Word.Application();
            Word.Document doc = app.Documents.Add();
            Word.Paragraph p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Квитанция №" + id + " от " + t.ToShortDateString();
            p.Range.Font.Bold = 1;
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
            p.Format.SpaceAfter = 20;
            p.Range.InsertParagraphAfter();
            
            p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Номер заказа: " + num;
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            p.Format.SpaceAfter = 20;
            p.Range.InsertParagraphAfter();
            
            p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Номер счета заказчика: " + chek.Num1;
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            p.Format.SpaceAfter = 20;
            p.Range.InsertParagraphAfter();
 
            p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Номер счета производителя:" + chek.Num2;
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            p.Format.SpaceAfter = 20;
            p.Range.InsertParagraphAfter();
            
            p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Цена заказа: " + chek.Price;
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            p.Format.SpaceAfter = 20;
            p.Range.InsertParagraphAfter();
            
            p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Оплатить до " + t.AddDays(7).ToShortDateString();
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            p.Format.SpaceAfter = 10;
            p.Range.InsertParagraphAfter();             
            
            p = doc.Content.Paragraphs.Add();
            p.Range.Text = "Плательщик ______________________ "; 
            p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
            p.Format.SpaceAfter = 10;
            p.Range.InsertParagraphAfter();
            
            doc.Save();
            app.Visible = true;
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2014, 23:36
Ответы с готовыми решениями:

Кнопка отмены действий другой кнопки
как создать button1, который бы прекращал работу button2? private void button2_Click(object sender, EventArgs e) { ...

Как запустить задачу после ее отмены?
Всем здравствуйте! Изучаю многопоточность и столкнулся с проблемой, подскажите в чем неправ? Есть код: Action action; ...

Построение графика с возможностью отмены и возврата линий
Всем привет! проблема в следующем: не могу понять как заставить работать механизм Redo на одноименной кнопке. Прошу помощи и подробного...

6
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
07.12.2014, 23:46
где окно сохранения, где кнопка отмены ...
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 57
07.12.2014, 23:50  [ТС]
Оно (стандартное окно сохранения) вызывается этим методом, в этом окне есть кнопка отмена
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
08.12.2014, 00:00
Цитата Сообщение от ronny10 Посмотреть сообщение
вызывается этим методом
не вижу где там вызывается SaveFileDialog.
или речь о другом окне сохранения ?
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 57
08.12.2014, 00:15  [ТС]
разумеется о другом, тут используется API MS Word
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
08.12.2014, 01:08
Лучший ответ Сообщение было отмечено ronny10 как решение

Решение

какая ошибка. и зачем принудительно вызывать сохранение если все равно потом word показывается пользователю ?

Добавлено через 41 минуту
у Interop.Word много багов. это один из них насколько помню.
раз ты сразу предлагаешь сохранить документ то делай по другому.
перед запуском документа (до его построение или после - на твое усмотрение) запускай SaveFileDialog. и если пользователь ввел имя файла и нажал ОК сохраняй по этому пути документ doc.SaveAs(). и потом показывай word.
если пользователь отказался сохранять документ в SaveFileDialog ( нажал отмена) то просто показывай документ без сохранения

примерно так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                var sfd = new SaveFileDialog();
                if (DialogResult.OK == sfd.ShowDialog())
                {
                    Object missing = System.Reflection.Missing.Value;
                    object fileName = sfd.FileName + ".doc";
                    doc.SaveAs(ref fileName,
                        ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing,
                        ref missing, ref missing, ref missing, ref missing, ref missing);  // сохраняем
                }
 
                app.Visible = true; //отображаем документ верда
 
            }
            catch (Exception ex)
            {
                Object oMissing = System.Reflection.Missing.Value;
                Object oFalse = false;
 
                doc.Close(ref oFalse, ref oMissing, ref oMissing);      //закрываем документ
                app.Quit(ref oFalse, ref oMissing, ref oMissing);   //закрываем приложение верда
 
                MessageBox.Show(ex.Message);
            }
1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.12.2014, 01:55
Да, такой баг известен. Оберни сохранение в try...catch
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2014, 01:55
Помогаю со студенческими работами здесь

Реализация операции отмены ввода значения в dataGridView
Я уже забыл про основной проект и создал новый чтобы проверить будут ли работать операции отмены и повтора ввода (во многих программах это...

Рисование в PictureBox с историей для отмены изменений
Всем привет. Собрал небольшую форму где есть область для рисования (хотя это громко сказано... так каляка-маляка). Очень хочется добавить...

Есть ли свойство у TextBox для отмены форматирования чисел
Здравствуйте. По умолчанию в textbox полях числа вида 0,00001 преобразовываются в 1E-05, можно ли поставить на это запрет или как в...

Во общем ситуация такая. Есть форма на форме кнопка. Кнопка запускает метод. После запуска метода форма умирае
Во общем ситуация такая. Есть форма на форме кнопка. Кнопка запускает метод. После запуска метода форма умирает. Как решить? В голове...

Отмена задачи, запуск задачи после отмены, перезапуск уже запущенной задачи
Добрый день. Сейчас разбираю TPL и у меня возник вопрос следующего содержания: у меня есть пример на Windows Forms с запуском и отменой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru