Dharmesh Parekh Ответов: 3

Как установить отступ между текстом и границей в элементе управления RichTextBox с помощью asp.net


Я разрабатываю приложение для windows в c#.net

У меня есть richtextbox, в котором я отображаю rtf - файлы;

Но он отображается рядом с границей rich textbox

Я не могу дать отступ между текстом и границей

Так что, пожалуйста, помогите мне

3 Ответов

Рейтинг:
24

BillWoodruff

Вы наткнулись на удивительные ограничения поставляемого MS элемента управления RichTextBox (RTB): даже несмотря на то, что стандарт RTF поддерживает встроенные коды полей, у вас нет возможности легко установить их. Вам придется взломать RTB так или иначе, чтобы эффективно установить переменные поля документа. И, как вы выяснили, заполнение не реализовано для RTB.

Однако есть два доступных свойства RTB, которые действительно имеют эффект (своего рода) предоставления вам полей:

1. Свойства rightmargin (целое число) свойство определяет длину строки. Он установлен в пикселях. Если ваш RTB имеет ширину 500 пикселей, а RightMargin установлен на 480, вы должны получить правое поле шириной 20 пикселей.

2. В ShowSelectionMargin (логическое) имущества, если установлено true, то будет подвергать маленький левом поле в РТБ. Щелчок в этой области позволит выбрать всю строку целиком. Вы не можете контролировать, насколько велика эта разница.

Частым взломом пользовательского интерфейса Win Forms для имитации полей RTB является:

1. Вставьте элемент управления RTB в панель или другой ContainerControl. установите для RTB DockStyle значение 'DockStyle.Заполнить

2. установите параметры заполнения панели для имитации полей.

3. Установите задний цвет как панели, так и RTB в один и тот же цвет.

4. Установите для стиля границы RTB значение 'None.


Karthik_Mahalingam

Я пробовал из существующих свойств RTB, но никак не мог этого добиться..
отличный ответ Билл.
хороший трюк, чтобы обмануть проблемы пользовательского интерфейса :-)
мои 5 для тебя..

Рейтинг:
1

tedr108

Вот простое решение для установки левого и правого полей RichTextBox, которое хорошо работало для меня в приложении C# Windows. Он устанавливает как правое, так и левое поля на 4 пикселя.

[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg, UIntPtr wParam, IntPtr lParam);

// both left and right margins set to 4 pixels with the last parm: 0x00040004
SendMessage(richtextbox1.Handle, 0xd3, (UIntPtr)0x3, (IntPtr)0x00040004);

Я попытался сделать SendMessage более правильным ниже:

const int EM_SETMARGINS = 0xd3;
const int EC_LEFTMARGIN = 0x1;
const int EC_RIGHTMARGIN = 0x2;

SendMessage(richtextbox1.Handle, EM_SETMARGINS,
 (UIntPtr)(EC_LEFTMARGIN | EC_RIGHTMARGIN), (IntPtr)0x00040004);

Я полагаю, что это решение было невозможно, когда вопрос был первоначально опубликован.


Рейтинг:
0

Member 12003599

Проблема Эс Си бихадм Барра-де перемещению населения, Комо solucinaria ешо?


Kats2512

Por favor habla en ingles

Richard Deeming

Нет publique su pregunta como una solución a la pregunta de otra persona.

ЗАДАВАТЬ ВОПРОС[^]. На Английском Языке. С гораздо большей детализацией, чем вы разместили здесь.