Dipika Wani Ответов: 4

Как исправить ошибку что система.окна.то axhost форма.InvalidActiveXStateException " прошел через


М с помощью кода после но я вам уклада.окна.то axhost форма.Ошибка InvalidActiveXStateException..
OpenFileDialog openFileDialog1 = new OpenFileDialog();
            //openFileDialog1.InitialDirectory = Application.StartupPath + "\\Reports\\";
            openFileDialog1.RestoreDirectory = true;
            openFileDialog1.Filter = "Pdf Files|*.pdf";
                try
                {
                   if (openFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                     
                        AxAcroPDF a = new AxAcroPDF();
                        a.LoadFile(Application.StartupPath + "\\Reports\\");
                        a.Show();
                                        
                    }
                }
                catch (ArgumentException  ex)
                {
                    MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

4 Ответов

Рейтинг:
20

Jaroslav Mitrovic

Еще раз здравствуйте.

AxAcroPDF a = new AxAcroPDF();
                    a.LoadFile(Application.StartupPath + "\\Reports\\");
                    a.Show();


Переменную экземпляра с именем a

Я думаю, что вам нужно попробовать это вместо этого.
a.CreateControl()
a.LoadFile(Application.StartupPath + "\\Reports\\");
a.Show();


AxAcroPDF - это тип управления, и a это экземпляр, который будет показан вместе с выбранным PDF-документом.

Неправильный:
axAcroPDF1.CreateControl();


Правильно
a.CreateControl();


Если код в первом вопросе тем временем не изменился.

..даже если этот ответ помечен как решенный. Не бей меня этой штукой... ;)

гр.у.


Рейтинг:
2

Jaroslav Mitrovic

Привет, Дипика.

Я думаю, вы хотите открыть PDF-файл внутри Acrobat ?

Этот код кажется мне вполне подходящим. Но в сообщении говорится, что он был не в том [настроении ;)] Государство.

Если это необходимо только для отображения PDF-файла, используйте .NET builtin Webrowser и передайте этот файл этому элементу управления. Это так расстраивает с ActiveX Interop.

Может быть, я и не решил эту проблему с кодом, но для PDF-ридера эта задача больше не нужна.

c. u. счастливое кодирование


Рейтинг:
1

Nirav Prabtani

Для каждого активного элемента управления x необходимо сначала создать его, чтобы инициализировать все события и дескрипторы.

пробовать.. :)

AxAcroPDF.CreateControl()


[Решенная] Система.Окна.Формы.То axhost.InvalidActiveXStateException был необработан[^]

То axhost.InvalidActiveXStateException[^]


Dipika Wani

@nirav prabtani-я использовал "axAcroPDF1.CreateControl (); "перед загрузкой файла из Пути, но все еще получает ту же ошибку, что и" исключение типа 'System.Окна.Формы.AxHost+InvalidActiveXStateException' был выброшен."
пожалуйста, помогите мне. Если есть какой-то другой вариант, то пожалуйста, позвоните мне.

Dipika Wani

пожалуйста, ответьте мне кто-нибудь. Это срочно.

Рейтинг:
0

RobScripta

Я хочу кое что добавить к этому решению:

Я получаю имя файла от:

string[] DirectoryFiles = System.IO.Directory.GetFiles(DirectoryName);


Когда я использую это:
a.CreateControl()
a.LoadFile(DirectoryFiles[0]);
a.Show();

Я получаю ошибку, упомянутую в этом вопросе.

Решение состоит в том, чтобы поставить @ перед загружаемым файлом:

a.CreateControl()
a.LoadFile(@DirectoryFiles[0]);
a.Show();


Поскольку это лучший результат при поиске в Google этой ошибки, я надеюсь, что смогу помочь таким людям, как я, которые забыли, что @ необходим.


CHill60

Вам не нужно использовать символ"@", если у вас нет литеральной строки.