Прочитайте слово Док.используя c # - PullRequest
1 голос
/ 07 июня 2011

Я создал приложение.Текст в расширенном текстовом поле хранится в слове doc.используя слово interlo dll.Теперь я хочу прочитать слово doc обратно в свой richtextbox.

Я использовал oDoc.Content.Text для чтения.Это работает, но выравнивания нет.Мне нужно загрузить с тем же alingment в слове doc.

А также я использовал этот код

oDoc.Activate();
oDoc.ActiveWindow.Selection.WholeStory();
oDoc.ActiveWindow.Selection.Copy()
IDataObject data = Clipboard.GetDataObject();
txtdocument.Text = Clipboard.GetDataObject()
       .GetData(DataFormats.Text).ToString();

Но он выдает эту ошибку:

Ссылка на объект не установлена ​​для экземпляра объекта.

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Является ли ваша программа однопоточной квартирой? Если нет, класс Clipboard не будет работать.

Ссылка

Класс Clipboard может использоваться только в потоках, настроенных на однопотоковый режим (STA). Чтобы использовать этот класс, убедитесь, что ваш метод Main помечен атрибутом STAThreadAttribute.

0 голосов
/ 07 июня 2011

Возможно, что Clipboard.GetDataObject(); вернет нулевую ссылку, а затем в самой последней строке вы попытаетесь получить доступ к ее члену

txtdocument.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();

В любом случае, просто как предложение, почему вы не заменяете последнюю строку

txtdocument.Text = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();

с этим:

txtdocument.Text = data.GetData(DataFormats.Text).ToString();

РЕДАКТИРОВАТЬ: проверьте, является ли одна из ваших переменных oDoc, txtDocument или data нулевой.

НОВОЕ РЕДАКТИРОВАНИЕ:

Thread tempThread = new Thread(new ThreadStart(threadstuff))
tempThread.SetApartmentState(System.Threading.ApartmentState.STA);
tempThread.Start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...