Как сделать так, чтобы richtextbox имел нумерацию пуль для подсчета более 225
Всем привет,
Сегодня я понял, что когда у меня есть более 255 строк и я применяю нумерацию пуль, RichTextBox продолжает давать мне номер 255 после строки 254, см. рисунок, который я вставляю.
Edit: я использую WinForms
Правка 2: я помещаю часть своего кода, относящуюся к заданному упорядоченному списку, в RichTextBox
[^]Нажмите, чтобы увидеть скриншот[^]
Является ли это ограничением RichTextBox или я должен что-то сделать, чтобы исправить это?
Спасибо
Что я уже пробовал:
Я не знаю, что делать. Я не знаю, в чем может быть причина, чтобы начать исправлять это.
У меня есть нумерация пуль из функции SendMessage с помощью PARAFORMAT2
Часть моего кода:
#region PARAFORMAT2 [StructLayout(LayoutKind.Sequential)] private class PARAFORMAT2 { public int cbSize; public int dwMask; public short wNumbering; public short wReserved; public int dxStartIndent; public int dxRightIndent; public int dxOffset; public short wAlignment; public short cTabCount; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x20)] public int[] rgxTabs; public int dySpaceBefore; // Vertical spacing before para public int dySpaceAfter; // Vertical spacing after para public int dyLineSpacing; // Line spacing depending on Rule public short sStyle; // Style handle public byte bLineSpacingRule; // Rule for line spacing (see tom.doc) public byte bOutlineLevel; // Outline Level public short wShadingWeight; // Shading in hundredths of a per cent public short wShadingStyle; // Byte 0: style, nib 2: cfpat, 3: cbpat public short wNumberingStart; // Starting value for numbering public short wNumberingStyle; // Alignment, Roman/Arabic, (), ), ., etc. public short wNumberingTab; // Space bet 1st indent and 1st-line text public short wBorderSpace; // Border-text spaces (nbl/bdr in pts) public short wBorderWidth; // Pen widths (nbl/bdr in half twips) public short wBorders; // Border styles (nibble/border) public PARAFORMAT2() { this.cbSize = Marshal.SizeOf(typeof(PARAFORMAT2)); } } #endregion
public enum Paraformat2Numbering { zero = 0, Normal = 1, //No paragraph numbering or bullets. ArabicNumbers = 2, //Uses Arabic numbers (1, 2, 3, ...). LowerCaseLetter = 3, //Uses lowercase letters (a, b, c, ...). UpperCaseLetter = 4, //Uses uppercase letters (A, B, C, ...). LowerCaseRoman = 5, //Uses lowercase Roman numerals (i, ii, iii, ...). UpperCaseRoman = 6 //Uses uppercase Roman numerals (I, II, III, ...). }
public enum Paraformat2NumberingStyle { RightParenthesis = 0x000,//Follows the number with a right parenthesis. DoubleParenthesis = 0x100,//Encloses the number in parentheses. Period = 0x200,//Follows the number with a period. Plain = 0x300,//Displays only the number. zero = 0x400//Continues a numbered list without applying the next number or bullet. }
public bool SelectionOrderList { get { return ( (GetSelectionParaformat2wNumbering() == Paraformat2Numbering.ArabicNumbers) && (GetSelectionParaformat2wNumberingStyle() == Paraformat2NumberingStyle.Period) ); } set { bOrder = value; if (value == true) SetSelectionParaFormat2(Paraformat2NumberingStyle.Period, Paraformat2Numbering.ArabicNumbers); else RemoveSelectionParaFormat2(); } }
Метод SetSelectionParaFotrmat2
public void SetSelectionParaFormat2(Paraformat2NumberingStyle style, Paraformat2Numbering Number) { PARAFORMAT2 p = new PARAFORMAT2(); p.dwMask = (int)(PFM_NUMBERING | PFM_OFFSET | PFM_NUMBERINGSTART | PFM_NUMBERINGSTYLE | PFM_NUMBERINGTAB); p.wNumbering = (short)Number; //p.dxOffset = BulletIndent; p.wNumberingStyle = (short)style; p.wNumberingStart = 1; p.wNumberingTab = 500; SendMessage(richTextBox.Handle, EM_SETPARAFORMAT, 0, p); }
Я поставил их на это
public bool SelectionOrderList { get { richTextBoxBulletClass r = new richTextBoxBulletClass(); r.richTextBox = note_txt; return r.SelectionOrderList; } set { richTextBoxBulletClass r = new richTextBoxBulletClass(); r.richTextBox = note_txt; r.SelectionOrderList = value; } }
Надеюсь, это поможет
Valery Possoz
WPF или Winform?
Karthik_Mahalingam
ОП пометил " windows"
Richard Deeming
"Windows" может означать Windows Forms, WPF или что-то еще. :)
(ОП обновила этот вопрос, чтобы прояснить его.)
Karthik_Mahalingam
о, прости, Ричард, на первый взгляд я прочитал это как "паутина"..
:)