powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Clipboard и rtf
3 сообщений из 3, страница 1 из 1
Clipboard и rtf
    #39253546
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую трафареты rtf и замену пошлей делал через Clipboard .
Пробую избавиться от Clipboard и выяснил что без потери разметки замена
полей возможна только при Replace непосредственно в текст rtf .
Все вроде работает , но если в тексте новой строки есть управляющие символы вроде
перевода строки, то они теряются . Странно конечно , может я не раскопал ?
Выкрутился преобразованием так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        		for (int j = 0 ; j <= strbui.Length - 1; j++)
        		{
	       			if (Convert.ToInt32(strbui[j]) == 10)
        			{
        				str2 = str2.Substring(0,j-1) + "\\par "+ str2.Substring(j+1,str2.Length-j-1);
        				break;
        			}
        		}


И че-то смотрю на это и плачу , есть нормальное решение или может кто копал
rtf.SelectedRtf и там есть решение без того чтобы портить нужный текст ?
...
Рейтинг: 0 / 0
Clipboard и rtf
    #39253966
bobsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И все-таки. Написал пару строчек
Код: 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.
		public string poisk(FullTableRichTextBox rtf,string str1,string str2) {
        	int a;
        	int min=0;
        	int max=0;
        	string str;
        	string finds;
        	String strbui="";
//вот от этого цикла хотелось бы избавиться
      				strbui = str2;
        		for (int j = 0 ; j <= strbui.Length - 1; j++)
        		{
	       			if (Convert.ToInt32(strbui[j]) == 10)
        			{
        				str2 = str2.Substring(0,j-1) + "\\par "+ str2.Substring(j+1,str2.Length-j-1);
        				break;
        			}
        		}
//
        	for (int jj = 0 ; jj < 10; jj++){
        		a = rtf.Find(str1.Trim());//ищем нужный текст в тексте , например "(АБ)"
        	if (a < 0){break;} // если не нашли то до свидания
        		str = rtf.SelectedRtf; // в rtf.SelectedRtf куча разметок а нам надо найти (АБ)
        		for (int j = str.Length - 1 ; j >= 0; j--)
        		{
        			strbui = Convert.ToString(str[j]);
        			if (strbui == ")"){max = j;}
        			if (strbui == "("){min = j;break;}
        		}
        		finds = str.Substring(min,max-min+1); // здесь мы его получим как (\'a1\'b1) или в уникоде (\u10??\u10??) тогда str2 надо в уникод
        		if (finds[1] == '\\' && finds[2] == 'u' ){ 
        			str2 = GetRtfUnicodeEscapedString(str2);
        		}
// вот после rtf.Insertupr(rtf.SelectedRtf,finds,str2) получаем строку в которой есть перевод строки , но в rtf.SelectedRtf перевода строки уже нету
        		rtf.SelectedRtf = rtf.Insertupr(rtf.SelectedRtf,finds,str2);
        	}
        		return rtf.Rtf;
        }
		public string Insertupr(string str,string str1,string str2) {
        	string stt = str;
        	stt = str.Replace(str1,str2);
        	return stt;



Может кто знает как работать с rtf.SelectedRtf ?
...
Рейтинг: 0 / 0
Clipboard и rtf
    #39253989
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
bobsoftМожет кто знает как работать с rtf.SelectedRtf ?
Наверное в хелпе написано
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Clipboard и rtf
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]